@kensaurus/skills 0.0.0-stage → 2.1.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-plugin/marketplace.json +53 -0
- package/.claude-plugin/plugin.json +40 -0
- package/.cursor-plugin/plugin.json +38 -0
- package/.mcp.json +28 -0
- package/CHANGELOG.md +1790 -0
- package/LICENSE +21 -0
- package/LICENSE-APACHE +62 -0
- package/NOTICE +13 -0
- package/README.md +821 -2
- package/SECURITY.md +55 -0
- package/agents/code-reviewer.md +60 -0
- package/agents/completion-judge.md +89 -0
- package/agents/db-migrator.md +125 -0
- package/agents/debugger.md +47 -0
- package/agents/deploy-checker.md +100 -0
- package/agents/perf-monitor.md +74 -0
- package/assets/favicon.png +0 -0
- package/assets/logo-light.png +0 -0
- package/assets/logo.png +0 -0
- package/assets/logo.svg +6 -0
- package/assets/og.png +0 -0
- package/bin/install.mjs +1127 -0
- package/bin/kenji.js +2 -0
- package/commands/adr.md +17 -0
- package/commands/aeo-plan.md +18 -0
- package/commands/arch-boundaries.md +17 -0
- package/commands/aso-plan.md +18 -0
- package/commands/auth-flows.md +19 -0
- package/commands/backup-plan.md +17 -0
- package/commands/burndown-full.md +25 -0
- package/commands/capacitor-plan.md +18 -0
- package/commands/codemod-safety.md +22 -0
- package/commands/commit.md +18 -0
- package/commands/complete-everything.md +40 -0
- package/commands/cost-plan.md +19 -0
- package/commands/deadcode-plan.md +26 -0
- package/commands/deadcode.md +32 -0
- package/commands/debug-issue.md +17 -0
- package/commands/deps-plan.md +18 -0
- package/commands/docs-plan.md +17 -0
- package/commands/doctrine.md +19 -0
- package/commands/error-plan.md +19 -0
- package/commands/feedback-to-closure.md +36 -0
- package/commands/fix-issue.md +76 -0
- package/commands/gate-logic.md +26 -0
- package/commands/green-repo.md +36 -0
- package/commands/grill-me.md +19 -0
- package/commands/gtm-plan.md +21 -0
- package/commands/gtm-weekly.md +17 -0
- package/commands/gtm.md +22 -0
- package/commands/handoff.md +15 -0
- package/commands/housekeep-backlog.md +18 -0
- package/commands/housekeep-files.md +22 -0
- package/commands/housekeep-gates.md +18 -0
- package/commands/instant-nav.md +11 -0
- package/commands/integrity-plan.md +19 -0
- package/commands/launch-kit.md +16 -0
- package/commands/mcp-guide.md +40 -0
- package/commands/mobile-plan.md +19 -0
- package/commands/native-rn-monorepo/README.md +78 -0
- package/commands/native-rn-monorepo/android-build.md +26 -0
- package/commands/native-rn-monorepo/android-install.md +32 -0
- package/commands/native-rn-monorepo/android-logcat.md +37 -0
- package/commands/native-rn-monorepo/ios-ci-logs.md +56 -0
- package/commands/native-rn-monorepo/ios-ci-status.md +52 -0
- package/commands/native-rn-monorepo/ios-ci-trigger.md +59 -0
- package/commands/native-rn-monorepo/rn-reset.md +50 -0
- package/commands/native-rn-monorepo/rn-ship-ios.md +67 -0
- package/commands/native-rn-monorepo/rn-verify.md +53 -0
- package/commands/perf-plan.md +18 -0
- package/commands/plan-mode.md +74 -0
- package/commands/pr.md +16 -0
- package/commands/pricing-plan.md +20 -0
- package/commands/privacy-plan.md +18 -0
- package/commands/readability.md +12 -0
- package/commands/readme.md +15 -0
- package/commands/refactor.md +15 -0
- package/commands/release-prep.md +17 -0
- package/commands/research.md +25 -0
- package/commands/responsive-audit.md +21 -0
- package/commands/review-code.md +18 -0
- package/commands/rls-plan.md +18 -0
- package/commands/secrets-plan.md +18 -0
- package/commands/security-plan.md +19 -0
- package/commands/ship-and-observe.md +36 -0
- package/commands/skill-conflicts.md +19 -0
- package/commands/slop-plan.md +18 -0
- package/commands/stub-plan.md +18 -0
- package/commands/test-mutation.md +16 -0
- package/commands/test-plan.md +17 -0
- package/commands/test.md +29 -0
- package/commands/thirdparty-web-interface-guidelines.md +185 -0
- package/commands/uiux-plan.md +18 -0
- package/commands/uiux.md +45 -0
- package/commands/update-deps.md +21 -0
- package/commands/validation-plan.md +19 -0
- package/commands-portable/fix-issue.md +72 -0
- package/commands-portable/plan-mode.md +92 -0
- package/commands-portable/research.md +91 -0
- package/docs/screenshots/README.md +5 -0
- package/docs/screenshots/audit-dark.png +0 -0
- package/docs/screenshots/build-dark.png +0 -0
- package/docs/screenshots/grill-dark.png +0 -0
- package/docs/screenshots/hero-dark.png +0 -0
- package/docs/screenshots/hero-light.png +0 -0
- package/docs/screenshots/ship-dark.png +0 -0
- package/docs/screenshots/src/showcase.html +320 -0
- package/hooks/completion-gate.mjs +258 -0
- package/hooks/cursor-hooks.json +13 -0
- package/hooks/hooks.json +15 -0
- package/install.sh +21 -0
- package/llms.txt +40 -0
- package/mcp/README.md +266 -0
- package/mcp/VERSIONS.md +41 -0
- package/mcp/mcp-full.json.template +124 -0
- package/mcp/mcp.json.template +29 -0
- package/mcp/pinned-versions.json +27 -0
- package/package.json +94 -4
- package/rules/approved-plan-execution.mdc +65 -0
- package/rules/full-stack-ship-discipline.mdc +37 -0
- package/rules/native-rn-monorepo/README.md +63 -0
- package/rules/native-rn-monorepo/_project.mdc +69 -0
- package/rules/native-rn-monorepo/native-android.mdc +72 -0
- package/rules/native-rn-monorepo/native-ios.mdc +61 -0
- package/rules/native-rn-monorepo/react-native-js.mdc +78 -0
- package/rules/native-rn-monorepo/web.mdc +60 -0
- package/rules/project-starter/components.mdc +54 -0
- package/rules/project-starter/data-fetching.mdc +77 -0
- package/rules/project-starter/git.mdc +41 -0
- package/rules/project-starter/supabase.mdc +37 -0
- package/rules/project-starter/tailwind.mdc +48 -0
- package/rules/project-starter/typescript.mdc +36 -0
- package/rules/project-starter/web-performance.mdc +42 -0
- package/rules/senior-engineer.mdc +30 -0
- package/rules/shell-first-search.mdc +19 -0
- package/rules/skill-workflows.mdc +35 -0
- package/rules/verification-before-completion.mdc +57 -0
- package/skills/audit-accessibility/SKILL.md +441 -0
- package/skills/audit-agent-speed/SKILL.md +181 -0
- package/skills/audit-agent-speed/scripts/stop-typecheck.mjs +151 -0
- package/skills/audit-analytics/SKILL.md +138 -0
- package/skills/audit-auth-flows/SKILL.md +267 -0
- package/skills/audit-backend-architecture/SKILL.md +266 -0
- package/skills/audit-backend-architecture/references/patterns.md +386 -0
- package/skills/audit-bundle-size/SKILL.md +295 -0
- package/skills/audit-cicd/SKILL.md +218 -0
- package/skills/audit-code-quality/SKILL.md +314 -0
- package/skills/audit-code-review/SKILL.md +289 -0
- package/skills/audit-codemod-safety/SKILL.md +159 -0
- package/skills/audit-db-schema/SKILL.md +465 -0
- package/skills/audit-db-schema/references/details.md +110 -0
- package/skills/audit-doctrine/SKILL.md +189 -0
- package/skills/audit-env-parity/SKILL.md +133 -0
- package/skills/audit-fe-api/SKILL.md +458 -0
- package/skills/audit-gate-logic/SKILL.md +219 -0
- package/skills/audit-i18n/SKILL.md +339 -0
- package/skills/audit-infra-cost/SKILL.md +142 -0
- package/skills/audit-langfuse-llm/SKILL.md +468 -0
- package/skills/audit-langfuse-llm/references/details.md +226 -0
- package/skills/audit-llm-security/SKILL.md +147 -0
- package/skills/audit-monetization-iap/SKILL.md +137 -0
- package/skills/audit-payment-system/SKILL.md +268 -0
- package/skills/audit-payment-system/references/checklist.md +283 -0
- package/skills/audit-performance/SKILL.md +383 -0
- package/skills/audit-performance/references/loading-priority-2026.md +81 -0
- package/skills/audit-realworld/SKILL.md +287 -0
- package/skills/audit-registry-listing/SKILL.md +122 -0
- package/skills/audit-resilience/SKILL.md +153 -0
- package/skills/audit-responsive/SKILL.md +221 -0
- package/skills/audit-responsive/references/checklist.md +166 -0
- package/skills/audit-security/SKILL.md +289 -0
- package/skills/audit-skill-conflicts/SKILL.md +178 -0
- package/skills/audit-ui-states/SKILL.md +146 -0
- package/skills/audit-uiux-design-system/SKILL.md +475 -0
- package/skills/audit-uiux-design-system/references/details.md +71 -0
- package/skills/audit-ux/SKILL.md +381 -0
- package/skills/audit-ux/references/details.md +245 -0
- package/skills/audit-ux-journeys/SKILL.md +215 -0
- package/skills/audit-ux-journeys/references/checklist.md +179 -0
- package/skills/backend-db-performance/SKILL.md +441 -0
- package/skills/backend-error-handling/SKILL.md +489 -0
- package/skills/backend-error-handling/references/details.md +58 -0
- package/skills/backend-observability/SKILL.md +88 -0
- package/skills/backend-patterns/SKILL.md +499 -0
- package/skills/backend-patterns/references/architecture-patterns.md +298 -0
- package/skills/backend-realtime/SKILL.md +403 -0
- package/skills/backend-realtime/references/patterns.md +74 -0
- package/skills/burndown-full/SKILL.md +174 -0
- package/skills/complete-everything/SKILL.md +295 -0
- package/skills/data-pipeline/SKILL.md +109 -0
- package/skills/data-visualization/SKILL.md +488 -0
- package/skills/debug-error/SKILL.md +322 -0
- package/skills/debug-fe-be-integration/SKILL.md +459 -0
- package/skills/debug-sentry-monitor/SKILL.md +497 -0
- package/skills/debug-sentry-monitor/references/details.md +165 -0
- package/skills/deploy-npm/SKILL.md +394 -0
- package/skills/deploy-npm/references/example-mushi-mushi.md +52 -0
- package/skills/deploy-verify/SKILL.md +489 -0
- package/skills/design-api/SKILL.md +379 -0
- package/skills/design-canvas/SKILL.md +155 -0
- package/skills/design-email/SKILL.md +370 -0
- package/skills/design-frontend/SKILL.md +143 -0
- package/skills/design-generative-art/SKILL.md +474 -0
- package/skills/design-mobile-first/SKILL.md +506 -0
- package/skills/design-motion/SKILL.md +333 -0
- package/skills/design-motion/references/delight-interactions.md +191 -0
- package/skills/design-prd/SKILL.md +443 -0
- package/skills/design-system/SKILL.md +457 -0
- package/skills/design-theme/SKILL.md +226 -0
- package/skills/design-theme/themes/tsumagoi-ranch.md +150 -0
- package/skills/docs-adr/SKILL.md +168 -0
- package/skills/docs-coauthor/SKILL.md +368 -0
- package/skills/docs-comparison-pages/SKILL.md +117 -0
- package/skills/docs-domain-modeling/SKILL.md +97 -0
- package/skills/docs-launch-kit/SKILL.md +139 -0
- package/skills/docs-writer/SKILL.md +469 -0
- package/skills/enhance-agent-guardrails/SKILL.md +164 -0
- package/skills/enhance-arch-boundaries/SKILL.md +154 -0
- package/skills/enhance-capacitor-ui/SKILL.md +463 -0
- package/skills/enhance-capacitor-ui/references/details.md +750 -0
- package/skills/enhance-email-deliverability/SKILL.md +143 -0
- package/skills/enhance-growth-loops/SKILL.md +122 -0
- package/skills/enhance-lifecycle-email/SKILL.md +130 -0
- package/skills/enhance-motion/SKILL.md +193 -0
- package/skills/enhance-onboarding/SKILL.md +148 -0
- package/skills/enhance-pwa/SKILL.md +303 -0
- package/skills/enhance-readability/SKILL.md +146 -0
- package/skills/enhance-readme/SKILL.md +496 -0
- package/skills/enhance-readme/package-lock.json +187 -0
- package/skills/enhance-readme/package.json +17 -0
- package/skills/enhance-readme/scripts/generate-readme-blocks.mjs +199 -0
- package/skills/enhance-readme/scripts/record-readme-tour.mjs +442 -0
- package/skills/enhance-skill-prompts/SKILL.md +167 -0
- package/skills/enhance-skill-prompts/references/exemplar-audit-auth-flows.md +311 -0
- package/skills/enhance-ux-laws/SKILL.md +409 -0
- package/skills/enhance-web-conversion/SKILL.md +155 -0
- package/skills/enhance-web-forms/SKILL.md +154 -0
- package/skills/enhance-web-instant-nav/SKILL.md +138 -0
- package/skills/enhance-web-instant-nav/references/bfcache-blockers.md +23 -0
- package/skills/enhance-web-instant-nav/references/early-hints.md +33 -0
- package/skills/enhance-web-instant-nav/references/speculation-rules.md +44 -0
- package/skills/enhance-web-landing/SKILL.md +459 -0
- package/skills/enhance-web-landing/references/details.md +773 -0
- package/skills/enhance-web-redesign/SKILL.md +228 -0
- package/skills/enhance-web-seo/SKILL.md +276 -0
- package/skills/enhance-web-ui/SKILL.md +473 -0
- package/skills/enhance-web-ui/references/details.md +674 -0
- package/skills/enhance-web-ux/HEURISTICS.md +248 -0
- package/skills/enhance-web-ux/PATTERNS.md +375 -0
- package/skills/enhance-web-ux/SKILL.md +464 -0
- package/skills/enhance-web-ux/examples.md +222 -0
- package/skills/enhance-web-ux/references/details.md +406 -0
- package/skills/enhance-web-web3d/SKILL.md +397 -0
- package/skills/enhance-web-web3d/references/css-canvas-effects.md +180 -0
- package/skills/handoff/SKILL.md +66 -0
- package/skills/housekeep-backlog/SKILL.md +149 -0
- package/skills/housekeep-dead-code/SKILL.md +387 -0
- package/skills/housekeep-dead-code/references/ratchet-ci.md +205 -0
- package/skills/housekeep-dead-code/references/supabase-hygiene.md +152 -0
- package/skills/housekeep-design/SKILL.md +207 -0
- package/skills/housekeep-files/SKILL.md +220 -0
- package/skills/housekeep-files/references/naming-and-catalog.md +86 -0
- package/skills/housekeep-files/scripts/housekeep-files.ps1 +360 -0
- package/skills/housekeep-files/scripts/housekeep-files.sh +238 -0
- package/skills/housekeep-gates/SKILL.md +174 -0
- package/skills/iterate-agent-harness/SKILL.md +137 -0
- package/skills/iterate-gtm-weekly/SKILL.md +103 -0
- package/skills/iterate-post-launch/SKILL.md +292 -0
- package/skills/meta-mcp-builder/SKILL.md +313 -0
- package/skills/meta-skill-creator/SKILL.md +304 -0
- package/skills/mobile-capacitor-platform/SKILL.md +103 -0
- package/skills/mobile-emulator-start/SKILL.md +296 -0
- package/skills/mobile-emulator-test/SKILL.md +491 -0
- package/skills/mobile-emulator-test/references/details.md +478 -0
- package/skills/mobile-rn-performance/SKILL.md +107 -0
- package/skills/mobile-rn-screen/SKILL.md +476 -0
- package/skills/mobile-rn-screen/references/details.md +785 -0
- package/skills/mushi-health/SKILL.md +206 -0
- package/skills/mushi-integration/SKILL.md +257 -0
- package/skills/plan-aeo-readiness/SKILL.md +166 -0
- package/skills/plan-antislop/SKILL.md +281 -0
- package/skills/plan-aso/SKILL.md +149 -0
- package/skills/plan-backup-dr/SKILL.md +131 -0
- package/skills/plan-capacitor-hardening/SKILL.md +217 -0
- package/skills/plan-data-integrity/SKILL.md +187 -0
- package/skills/plan-dead-code/SKILL.md +386 -0
- package/skills/plan-dead-code/references/knip-config.md +214 -0
- package/skills/plan-dead-code/references/output-templates.md +133 -0
- package/skills/plan-dead-code/references/preservation-contract.md +50 -0
- package/skills/plan-dead-code/references/residue-greps.md +84 -0
- package/skills/plan-dependency-provenance/SKILL.md +200 -0
- package/skills/plan-docs-sync/SKILL.md +143 -0
- package/skills/plan-docs-sync/references/drift-taxonomy.md +43 -0
- package/skills/plan-docs-sync/references/output-templates.md +33 -0
- package/skills/plan-docs-sync/references/preservation-contract.md +17 -0
- package/skills/plan-error-handling/SKILL.md +205 -0
- package/skills/plan-gtm/SKILL.md +276 -0
- package/skills/plan-gtm/references/benchmarks-2026.md +183 -0
- package/skills/plan-input-validation/SKILL.md +179 -0
- package/skills/plan-llm-cost-guardrails/SKILL.md +176 -0
- package/skills/plan-mobile-readiness/SKILL.md +171 -0
- package/skills/plan-perf-audit/SKILL.md +145 -0
- package/skills/plan-perf-audit/references/audit-scope.md +51 -0
- package/skills/plan-perf-audit/references/output-templates.md +33 -0
- package/skills/plan-perf-audit/references/preservation-contract.md +13 -0
- package/skills/plan-pricing/SKILL.md +173 -0
- package/skills/plan-privacy-compliance/SKILL.md +148 -0
- package/skills/plan-rls-audit/SKILL.md +231 -0
- package/skills/plan-secrets-audit/SKILL.md +181 -0
- package/skills/plan-security-audit/SKILL.md +168 -0
- package/skills/plan-security-audit/references/output-templates.md +36 -0
- package/skills/plan-security-audit/references/owasp-supabase-scope.md +55 -0
- package/skills/plan-security-audit/references/preservation-contract.md +18 -0
- package/skills/plan-stub-checker/SKILL.md +216 -0
- package/skills/plan-stub-checker/references/detection-methodology.md +75 -0
- package/skills/plan-stub-checker/references/detection-taxonomy.md +34 -0
- package/skills/plan-stub-checker/references/output-templates.md +63 -0
- package/skills/plan-stub-checker/references/preservation-contract.md +24 -0
- package/skills/plan-test-coverage/SKILL.md +170 -0
- package/skills/plan-test-coverage/references/methodology.md +54 -0
- package/skills/plan-test-coverage/references/output-templates.md +34 -0
- package/skills/plan-test-coverage/references/preservation-contract.md +15 -0
- package/skills/plan-uiux-unification/SKILL.md +230 -0
- package/skills/plan-uiux-unification/references/output-templates.md +67 -0
- package/skills/plan-uiux-unification/references/phase-workbook.md +85 -0
- package/skills/plan-uiux-unification/references/preservation-contract.md +24 -0
- package/skills/protocol-browser-anti-stall/SKILL.md +211 -0
- package/skills/protocol-browser-anti-stall/references/mcp-to-cli-map.md +113 -0
- package/skills/protocol-browser-anti-stall/references/playwright-session-coordination.md +170 -0
- package/skills/research/SKILL.md +422 -0
- package/skills/test-exploratory/SKILL.md +165 -0
- package/skills/test-exploratory/references/charter-template.md +29 -0
- package/skills/test-load/SKILL.md +126 -0
- package/skills/test-mutation/SKILL.md +160 -0
- package/skills/test-playwright/SKILL.md +354 -0
- package/skills/test-qa/SKILL.md +364 -0
- package/skills/test-qa/references/details.md +268 -0
- package/skills/test-red-team/SKILL.md +386 -0
- package/skills/test-red-team/references/owasp-attack-checklist.md +193 -0
- package/skills/test-unit/SKILL.md +259 -0
- package/skills/test-unit/references/details.md +267 -0
- package/skills/test-visual-regression/SKILL.md +132 -0
- package/skills/thirdparty-emil-design-eng/ATTRIBUTION.md +20 -0
- package/skills/thirdparty-emil-design-eng/SKILL.md +21 -0
- package/skills/thirdparty-emil-design-eng/references/emil-design-eng.md +676 -0
- package/skills/thirdparty-ui-ux-pro-max/ATTRIBUTION.md +22 -0
- package/skills/thirdparty-ui-ux-pro-max/SKILL.md +304 -0
- package/skills/thirdparty-ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/thirdparty-ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/thirdparty-ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/thirdparty-ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/thirdparty-ui-ux-pro-max/data/products.csv +97 -0
- package/skills/thirdparty-ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/thirdparty-ui-ux-pro-max/data/styles.csv +68 -0
- package/skills/thirdparty-ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/thirdparty-ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/thirdparty-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/thirdparty-ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/search.py +114 -0
- package/skills/thirdparty-web-interface-guidelines/ATTRIBUTION.md +23 -0
- package/skills/thirdparty-web-interface-guidelines/SKILL.md +190 -0
- package/skills/workflow-build-feature/SKILL.md +118 -0
- package/skills/workflow-coding-discipline/SKILL.md +140 -0
- package/skills/workflow-environment-ready/SKILL.md +128 -0
- package/skills/workflow-feature-flag/SKILL.md +262 -0
- package/skills/workflow-feedback-to-closure/SKILL.md +165 -0
- package/skills/workflow-fix-and-ship/SKILL.md +136 -0
- package/skills/workflow-git-commit/SKILL.md +200 -0
- package/skills/workflow-green-repo/SKILL.md +166 -0
- package/skills/workflow-grilling/SKILL.md +73 -0
- package/skills/workflow-gtm/SKILL.md +153 -0
- package/skills/workflow-housekeep/SKILL.md +453 -0
- package/skills/workflow-housekeep/references/templates.md +109 -0
- package/skills/workflow-launch-ready/SKILL.md +145 -0
- package/skills/workflow-merge-conflicts/SKILL.md +62 -0
- package/skills/workflow-onboard/SKILL.md +99 -0
- package/skills/workflow-parallel-agents/SKILL.md +164 -0
- package/skills/workflow-pr/SKILL.md +197 -0
- package/skills/workflow-quality-gate/SKILL.md +147 -0
- package/skills/workflow-refactor/SKILL.md +274 -0
- package/skills/workflow-release-prep/SKILL.md +207 -0
- package/skills/workflow-ship-and-observe/SKILL.md +164 -0
- package/skills/workflow-spec-tdd/SKILL.md +141 -0
- package/skills/workflow-spec-tdd/references/spec-template.md +126 -0
- package/skills/workflow-spec-tdd/references/tdd-patterns.md +167 -0
- package/skills-cursor/babysit/SKILL.md +17 -0
- package/skills-cursor/canvas/SKILL.md +142 -0
- package/skills-cursor/canvas/sdk/canvas-tokens.d.ts +235 -0
- package/skills-cursor/canvas/sdk/chart-primitives.d.ts +200 -0
- package/skills-cursor/canvas/sdk/dag-layout.d.ts +102 -0
- package/skills-cursor/canvas/sdk/diff-view.d.ts +130 -0
- package/skills-cursor/canvas/sdk/form-primitives.d.ts +194 -0
- package/skills-cursor/canvas/sdk/hooks.d.ts +117 -0
- package/skills-cursor/canvas/sdk/index.d.ts +47 -0
- package/skills-cursor/canvas/sdk/theme.d.ts +61 -0
- package/skills-cursor/canvas/sdk/todo-list.d.ts +49 -0
- package/skills-cursor/canvas/sdk/ui-primitives.d.ts +549 -0
- package/skills-cursor/canvas/sdk/ui-primitives.test.d.ts +2 -0
- package/skills-cursor/create-hook/SKILL.md +238 -0
- package/skills-cursor/create-rule/SKILL.md +185 -0
- package/skills-cursor/create-skill/SKILL.md +269 -0
- package/skills-cursor/create-skill/references/authoring-guide.md +182 -0
- package/skills-cursor/create-subagent/SKILL.md +228 -0
- package/skills-cursor/migrate-to-skills/SKILL.md +121 -0
- package/skills-cursor/shell/SKILL.md +22 -0
- package/skills-cursor/split-to-prs/SKILL.md +47 -0
- package/skills-cursor/statusline/SKILL.md +193 -0
- package/skills-cursor/update-cli-config/SKILL.md +85 -0
- package/skills-cursor/update-cursor-settings/SKILL.md +137 -0
- package/skills.sh.json +297 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-email
|
|
3
|
+
description: >
|
|
4
|
+
Design and build transactional and marketing email templates. Use when
|
|
5
|
+
"build an email template", "welcome email", "password reset email", "React
|
|
6
|
+
Email", "MJML", "dark mode email", or "email copy review". Spam/SPF →
|
|
7
|
+
enhance-email-deliverability.
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# design-email — Email Templates That Actually Get Read
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED.** Copy and layout judgment `[HIGH freedom]`;
|
|
14
|
+
stack detect, markup, send, and preview `[LOW freedom — run exactly]`.
|
|
15
|
+
|
|
16
|
+
**Email is the one channel users check before they check your app.** A
|
|
17
|
+
well-crafted transactional email — clear, warm, fast-loading, and readable on
|
|
18
|
+
any device — builds trust. A corporate, jargon-heavy, broken email erodes it.
|
|
19
|
+
This skill handles design and copy. Inbox placement / SPF DKIM DMARC is `enhance-email-deliverability`.
|
|
20
|
+
|
|
21
|
+
## How to reason
|
|
22
|
+
|
|
23
|
+
1. **Detect** — React Email vs MJML vs none
|
|
24
|
+
2. **Audit** — copy voice, subject, one action; client-safe layout
|
|
25
|
+
3. **Write** — specific subject, human "you", plain-text twin
|
|
26
|
+
4. **Preview** — 375px + dark mode; hand DNS off
|
|
27
|
+
|
|
28
|
+
## Worked example
|
|
29
|
+
|
|
30
|
+
> **Detect:** `@react-email/components` already in `package.json`; `emails/` has a receipt only.
|
|
31
|
+
> **Audit:** password-reset subject is "Account notification"; two CTAs; no preview text.
|
|
32
|
+
> **Write:** subject "Reset your App password"; one "Reset my password" button; expiry in the first sentence.
|
|
33
|
+
> **Preview:** `npx email dev` at 375px; tap target ≥44px; DNS/spam → `enhance-email-deliverability`.
|
|
34
|
+
|
|
35
|
+
## Self-critique before reporting
|
|
36
|
+
|
|
37
|
+
- **One action** — exactly one primary CTA; subject is specific and honest
|
|
38
|
+
- **Client-safe** — 600px single column, inline styles, alt text, dark fallback
|
|
39
|
+
- **Human copy** — "you"/"we"; no jargon or ALL-CAPS subject
|
|
40
|
+
- **Right owner** — SPF / DKIM / DMARC / bounces / List-Unsubscribe → `enhance-email-deliverability`
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Phase 0: Detect the stack [LOW freedom — run exactly]
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
package.json → @react-email/*, mjml, nodemailer, @sendgrid/mail,
|
|
48
|
+
resend, @aws-sdk/client-ses, postmark
|
|
49
|
+
emails/ → existing React Email templates
|
|
50
|
+
src/emails/ → email template directory
|
|
51
|
+
.env.* → RESEND_API_KEY, SENDGRID_API_KEY, etc. (reference by name only)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
| Detected framework | Approach |
|
|
55
|
+
|--------------------|----------|
|
|
56
|
+
| React Email (`@react-email/components`) | JSX components, preview server, multi-client export |
|
|
57
|
+
| MJML | XML-like syntax, battle-tested cross-client output |
|
|
58
|
+
| None | Implement React Email (current best practice) |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Phase 1: Audit existing templates [HIGH freedom]
|
|
63
|
+
|
|
64
|
+
If templates already exist, walk through each one and check:
|
|
65
|
+
|
|
66
|
+
**Copy quality**:
|
|
67
|
+
- Does it sound like a person sent it, or a system?
|
|
68
|
+
- Is the subject line specific? ("Your order is on its way" not "Order notification")
|
|
69
|
+
- Is the first sentence the most important one (preview text matters)?
|
|
70
|
+
- Does it tell the reader exactly what to do and what happens next?
|
|
71
|
+
- Is it free of business jargon, technical terms, and passive voice?
|
|
72
|
+
|
|
73
|
+
**Design**:
|
|
74
|
+
- Single-column layout? (Most reliable across clients)
|
|
75
|
+
- Max-width 600px? (Standard email width)
|
|
76
|
+
- All styles inline? (Gmail strips `<style>` tags)
|
|
77
|
+
- Images have `alt` text? (Many clients block images by default)
|
|
78
|
+
- Dark mode support? (`@media (prefers-color-scheme: dark)` + inline fallbacks)
|
|
79
|
+
- Mobile: tap targets ≥ 44px, font size ≥ 14px
|
|
80
|
+
|
|
81
|
+
**Sender identity (template-side):**
|
|
82
|
+
- "From" address uses the app domain, not a personal Gmail?
|
|
83
|
+
- SPF / DKIM / DMARC / bounces → `enhance-email-deliverability`
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Phase 2: Research best practices [HIGH freedom]
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
firecrawl:firecrawl_search
|
|
91
|
+
{
|
|
92
|
+
"query": "transactional email design best practices [current year] React Email",
|
|
93
|
+
"limit": 3,
|
|
94
|
+
"sources": [{ "type": "web" }]
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Fetch React Email docs if using it:
|
|
99
|
+
```json
|
|
100
|
+
context7:resolve-library-id
|
|
101
|
+
{
|
|
102
|
+
"libraryName": "react-email"
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Phase 3: Copy principles [HIGH freedom]
|
|
109
|
+
|
|
110
|
+
Apply these to every email before looking at design:
|
|
111
|
+
|
|
112
|
+
| Principle | How |
|
|
113
|
+
|-----------|-----|
|
|
114
|
+
| Lead with the most important thing | First line = the key action or news. Not "Hi, we wanted to let you know that…" |
|
|
115
|
+
| Subject line = specific, honest | "Your password reset link" not "Important account information" |
|
|
116
|
+
| One email, one action | Every email should have exactly one thing it wants the reader to do |
|
|
117
|
+
| Write to a person, not an account | "You" not "the user". "We" not "the system". |
|
|
118
|
+
| Tell them what happens next | "Click the button below to confirm. The link expires in 24 hours." |
|
|
119
|
+
| No jargon | "Your account" not "your profile entity". "Sign in" not "authenticate". |
|
|
120
|
+
| Active voice | "We've sent you a link" not "A link has been sent to you" |
|
|
121
|
+
| Short paragraphs | 1–2 sentences max. White space is your friend in email. |
|
|
122
|
+
| Plain text fallback | Every HTML email should have a plain text version |
|
|
123
|
+
|
|
124
|
+
### Common email types — copy templates
|
|
125
|
+
|
|
126
|
+
**Welcome email:**
|
|
127
|
+
```
|
|
128
|
+
Subject: Welcome to [App Name], [First Name] 👋
|
|
129
|
+
Preview: Here's how to get started in 2 minutes.
|
|
130
|
+
|
|
131
|
+
Hi [First Name],
|
|
132
|
+
|
|
133
|
+
You're in. [App Name] helps you [core value in 1 sentence].
|
|
134
|
+
|
|
135
|
+
Here's the first thing to do: [single CTA — most valuable first action].
|
|
136
|
+
|
|
137
|
+
[Primary Button: Get started]
|
|
138
|
+
|
|
139
|
+
If you have any questions, just reply to this email.
|
|
140
|
+
|
|
141
|
+
— [Name], [App Name]
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Password reset:**
|
|
145
|
+
```
|
|
146
|
+
Subject: Reset your [App Name] password
|
|
147
|
+
Preview: Your link expires in 1 hour.
|
|
148
|
+
|
|
149
|
+
Hi [First Name],
|
|
150
|
+
|
|
151
|
+
Someone requested a password reset for your [App Name] account.
|
|
152
|
+
If that was you, click the button below. If not, you can ignore this email.
|
|
153
|
+
|
|
154
|
+
[Primary Button: Reset my password]
|
|
155
|
+
|
|
156
|
+
This link expires in 1 hour. After that, you'll need to request a new one.
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Billing confirmation:**
|
|
160
|
+
```
|
|
161
|
+
Subject: Your payment of [amount] was successful
|
|
162
|
+
Preview: Next billing date: [date].
|
|
163
|
+
|
|
164
|
+
Hi [First Name],
|
|
165
|
+
|
|
166
|
+
Your payment of [amount] for [Plan Name] went through.
|
|
167
|
+
|
|
168
|
+
Amount: [amount]
|
|
169
|
+
Date: [date]
|
|
170
|
+
Next billing date: [date]
|
|
171
|
+
|
|
172
|
+
[Button: View your invoice]
|
|
173
|
+
|
|
174
|
+
Questions about your bill? Reply here and we'll sort it out.
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Phase 4: Build the template (React Email) [LOW freedom — run exactly]
|
|
180
|
+
|
|
181
|
+
Install if not present:
|
|
182
|
+
```bash
|
|
183
|
+
npm install react-email @react-email/components
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Base template structure (illustrative — swap the indigo button and off-white ground for the brand):
|
|
187
|
+
```tsx
|
|
188
|
+
// emails/welcome.tsx
|
|
189
|
+
import {
|
|
190
|
+
Body, Button, Container, Head, Heading, Hr, Html,
|
|
191
|
+
Link, Preview, Section, Text, Img,
|
|
192
|
+
} from '@react-email/components';
|
|
193
|
+
|
|
194
|
+
interface WelcomeEmailProps {
|
|
195
|
+
firstName: string;
|
|
196
|
+
ctaUrl: string;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export function WelcomeEmail({ firstName, ctaUrl }: WelcomeEmailProps) {
|
|
200
|
+
return (
|
|
201
|
+
<Html lang="en">
|
|
202
|
+
<Head />
|
|
203
|
+
<Preview>Welcome to AppName — here's how to get started.</Preview>
|
|
204
|
+
<Body style={body}>
|
|
205
|
+
<Container style={container}>
|
|
206
|
+
<Img src="https://yourdomain.com/logo.png" width="48" height="48" alt="AppName" />
|
|
207
|
+
<Heading style={h1}>Welcome, {firstName}</Heading>
|
|
208
|
+
<Text style={text}>
|
|
209
|
+
You're in. AppName helps you [core value in one sentence].
|
|
210
|
+
</Text>
|
|
211
|
+
<Text style={text}>
|
|
212
|
+
Here's the first thing to do:
|
|
213
|
+
</Text>
|
|
214
|
+
<Section style={btnContainer}>
|
|
215
|
+
<Button style={button} href={ctaUrl}>
|
|
216
|
+
Get started
|
|
217
|
+
</Button>
|
|
218
|
+
</Section>
|
|
219
|
+
<Text style={text}>
|
|
220
|
+
If you have any questions, just reply to this email.
|
|
221
|
+
</Text>
|
|
222
|
+
<Hr style={hr} />
|
|
223
|
+
<Text style={footer}>
|
|
224
|
+
AppName · 123 Street · City · {' '}
|
|
225
|
+
<Link href="{{{UNSUBSCRIBE_URL}}}">Unsubscribe</Link>
|
|
226
|
+
</Text>
|
|
227
|
+
</Container>
|
|
228
|
+
</Body>
|
|
229
|
+
</Html>
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
const body = { backgroundColor: '#f6f9fc', fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif' };
|
|
234
|
+
const container = { backgroundColor: '#ffffff', margin: '40px auto', padding: '40px', maxWidth: '600px', borderRadius: '8px' };
|
|
235
|
+
const h1 = { fontSize: '24px', fontWeight: '700', color: '#1a1a1a', marginBottom: '16px' };
|
|
236
|
+
const text = { fontSize: '16px', lineHeight: '1.6', color: '#444', marginBottom: '16px' };
|
|
237
|
+
const btnContainer = { textAlign: 'center' as const, marginBottom: '24px' };
|
|
238
|
+
const button = { backgroundColor: '#6366f1', borderRadius: '6px', color: '#fff', fontSize: '16px', fontWeight: '600', padding: '12px 28px', textDecoration: 'none', display: 'inline-block' };
|
|
239
|
+
const hr = { borderColor: '#e5e7eb', marginTop: '32px', marginBottom: '32px' };
|
|
240
|
+
const footer = { fontSize: '12px', color: '#9ca3af', textAlign: 'center' as const };
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Dark mode support
|
|
244
|
+
|
|
245
|
+
```tsx
|
|
246
|
+
// In <Head>:
|
|
247
|
+
<style>{`
|
|
248
|
+
@media (prefers-color-scheme: dark) {
|
|
249
|
+
.email-body { background-color: #1a1a1a !important; }
|
|
250
|
+
.email-container { background-color: #2d2d2d !important; }
|
|
251
|
+
.email-text { color: #e5e7eb !important; }
|
|
252
|
+
.email-heading { color: #f9fafb !important; }
|
|
253
|
+
}
|
|
254
|
+
`}</style>
|
|
255
|
+
// Add className to Body, Container, Text, Heading components to match
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Phase 5: Send via provider [LOW freedom — run exactly]
|
|
261
|
+
|
|
262
|
+
### Resend (recommended for new projects)
|
|
263
|
+
|
|
264
|
+
```typescript
|
|
265
|
+
import { Resend } from 'resend';
|
|
266
|
+
import { WelcomeEmail } from '../emails/welcome';
|
|
267
|
+
import { render } from '@react-email/render';
|
|
268
|
+
|
|
269
|
+
const resend = new Resend(process.env.RESEND_API_KEY);
|
|
270
|
+
|
|
271
|
+
await resend.emails.send({
|
|
272
|
+
from: 'AppName <hello@yourdomain.com>',
|
|
273
|
+
to: user.email,
|
|
274
|
+
subject: `Welcome to AppName, ${user.firstName}`,
|
|
275
|
+
react: <WelcomeEmail firstName={user.firstName} ctaUrl={ctaUrl} />,
|
|
276
|
+
});
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### Add a Supabase Edge Function trigger (if using Supabase)
|
|
280
|
+
|
|
281
|
+
```typescript
|
|
282
|
+
// supabase/functions/send-welcome-email/index.ts
|
|
283
|
+
import { serve } from 'https://deno.land/std/http/server.ts';
|
|
284
|
+
import { Resend } from 'npm:resend';
|
|
285
|
+
|
|
286
|
+
serve(async (req) => {
|
|
287
|
+
const { record } = await req.json(); // from a database webhook
|
|
288
|
+
const resend = new Resend(Deno.env.get('RESEND_API_KEY'));
|
|
289
|
+
await resend.emails.send({
|
|
290
|
+
from: 'AppName <hello@yourdomain.com>',
|
|
291
|
+
to: record.email,
|
|
292
|
+
subject: `Welcome to AppName!`,
|
|
293
|
+
html: '...', // rendered HTML
|
|
294
|
+
});
|
|
295
|
+
return new Response('OK');
|
|
296
|
+
});
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Deploy:
|
|
300
|
+
```bash
|
|
301
|
+
supabase functions deploy send-welcome-email --no-verify-jwt
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## Phase 6: Content flags that hurt placement [LOW freedom — do not skip]
|
|
307
|
+
|
|
308
|
+
DNS auth, bounces, and List-Unsubscribe headers are `enhance-email-deliverability`.
|
|
309
|
+
This phase only owns copy/markup that templates can fix:
|
|
310
|
+
|
|
311
|
+
- [ ] From address uses your domain (not `noreply@gmail.com`)
|
|
312
|
+
- [ ] Reply-To set if replies should go somewhere useful
|
|
313
|
+
- [ ] No ALL-CAPS words in subject line
|
|
314
|
+
- [ ] No spam trigger words: "FREE", "URGENT", "ACT NOW", "GUARANTEED"
|
|
315
|
+
- [ ] Plain text version matches the HTML version
|
|
316
|
+
- [ ] Hand remaining inbox-placement work to `enhance-email-deliverability`
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Phase 7: Preview and test [LOW freedom — run exactly]
|
|
321
|
+
|
|
322
|
+
Start the React Email preview server:
|
|
323
|
+
```bash
|
|
324
|
+
npx email dev --dir emails --port 3001
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
Then check with Playwright:
|
|
328
|
+
```bash
|
|
329
|
+
PW="npx --yes @playwright/cli@latest"
|
|
330
|
+
$PW -s=email-preview open --headed http://localhost:3001
|
|
331
|
+
$PW -s=email-preview snapshot # verify each template renders
|
|
332
|
+
$PW -s=email-preview resize 375 812 # mobile — font size, tap targets
|
|
333
|
+
$PW -s=email-preview screenshot --filename ".playwright-mcp/email-mobile.png"
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
For cross-client testing, use Litmus or Email on Acid. Key clients to test:
|
|
337
|
+
- Gmail (web + Android + iOS)
|
|
338
|
+
- Apple Mail (macOS + iOS)
|
|
339
|
+
- Outlook (Windows — most restrictive CSS support)
|
|
340
|
+
- Samsung Mail
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## Email templates checklist
|
|
345
|
+
|
|
346
|
+
```
|
|
347
|
+
Design:
|
|
348
|
+
- [ ] Max-width 600px
|
|
349
|
+
- [ ] Single column
|
|
350
|
+
- [ ] All styles inline (no <style> blocks except dark mode)
|
|
351
|
+
- [ ] Images have alt text
|
|
352
|
+
- [ ] Buttons ≥ 44px tall, large enough to tap
|
|
353
|
+
- [ ] Font size ≥ 14px on body text
|
|
354
|
+
- [ ] Dark mode tested
|
|
355
|
+
|
|
356
|
+
Copy:
|
|
357
|
+
- [ ] Subject line is specific and honest
|
|
358
|
+
- [ ] Preview text set and meaningful
|
|
359
|
+
- [ ] First sentence is the most important thing
|
|
360
|
+
- [ ] Exactly one primary action
|
|
361
|
+
- [ ] Copy sounds like a person wrote it
|
|
362
|
+
- [ ] No jargon or passive voice
|
|
363
|
+
- [ ] Plain text version exists
|
|
364
|
+
|
|
365
|
+
Deliverability (handoff — do not own here):
|
|
366
|
+
- [ ] From address on app domain
|
|
367
|
+
- [ ] Plain-text alternative present
|
|
368
|
+
- [ ] SPF / DKIM / DMARC / bounces / unsubscribe headers → `enhance-email-deliverability`
|
|
369
|
+
```
|
|
370
|
+
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-frontend
|
|
3
|
+
description: >
|
|
4
|
+
Create a new production-grade UI from scratch, not a polish pass. Use when
|
|
5
|
+
"build this UI", "design this page", or "new dashboard layout". Polish →
|
|
6
|
+
enhance-web-ui. Landing → enhance-web-landing. Redesign →
|
|
7
|
+
enhance-web-redesign.
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Frontend Design Skill
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED.** Visual composition `[HIGH freedom]`; design-system
|
|
14
|
+
discovery `[LOW freedom — run exactly]`.
|
|
15
|
+
|
|
16
|
+
> Discover design systems, respect existing patterns, create beautiful interfaces.
|
|
17
|
+
|
|
18
|
+
## How to reason
|
|
19
|
+
|
|
20
|
+
1. **Discover** — tokens, `components/ui`, forbidden patterns
|
|
21
|
+
2. **Reuse** — extend existing components; do not fork a second Button
|
|
22
|
+
3. **Compose** — new surface on those tokens
|
|
23
|
+
4. **Check** — type mins, 44px targets, reduced-motion, none of the named defaults in the Anti-Generic list
|
|
24
|
+
|
|
25
|
+
## Worked example
|
|
26
|
+
|
|
27
|
+
> **Discover:** `components/ui/button.tsx` + `globals.css` tokens; `text-xs` min; `rounded-sm`.
|
|
28
|
+
> **Reuse:** settings rows use existing `Button` / `Input`; no new primitive.
|
|
29
|
+
> **Compose:** new `/settings` page — token spacing, `text-sm` body, 44px save.
|
|
30
|
+
> **Check:** Anti-Generic list clear (no Inter, purple-on-white, or pill buttons); `prefers-reduced-motion` on any spinner.
|
|
31
|
+
|
|
32
|
+
## Self-critique before reporting
|
|
33
|
+
|
|
34
|
+
- **Discovery stated** — token file, radius, and forbidden list were spoken before JSX
|
|
35
|
+
- **Reuse first** — no duplicate primitive next to `components/ui`
|
|
36
|
+
- **Mins held** — readable type ≥ `text-xs`; tap targets ≥44px
|
|
37
|
+
- **Right owner** — polish existing → `enhance-web-ui`; landing → `enhance-web-landing`; redesign existing → `enhance-web-redesign`
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Phase 1: Design System Discovery [LOW freedom — run exactly]
|
|
42
|
+
|
|
43
|
+
**Before writing ANY frontend code:**
|
|
44
|
+
|
|
45
|
+
### 1.1 Find Design System Files
|
|
46
|
+
```
|
|
47
|
+
Glob: **/*design-system*.{md,ts,css}
|
|
48
|
+
Glob: **/tokens*.{ts,json}
|
|
49
|
+
Glob: **/components/ui/**
|
|
50
|
+
Glob: **/_*README*
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 1.2 Extract & Document Tokens
|
|
54
|
+
| Category | Find | Examples |
|
|
55
|
+
|----------|------|----------|
|
|
56
|
+
| Typography | Sizes, weights | `text-xs`, `font-medium` |
|
|
57
|
+
| Spacing | Padding, gaps | `p-4`, `gap-2` |
|
|
58
|
+
| Colors | Palette, semantic | `bg-emerald-50` |
|
|
59
|
+
| Borders | Radius, styles | `rounded-sm` |
|
|
60
|
+
| Animations | Durations | `duration-200` |
|
|
61
|
+
|
|
62
|
+
### 1.3 Find Forbidden Patterns
|
|
63
|
+
```bash
|
|
64
|
+
grep -r "NEVER\|FORBIDDEN\|❌" docs/ README*
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 1.4 Verification Statement (REQUIRED)
|
|
68
|
+
```
|
|
69
|
+
"Design System Discovery:
|
|
70
|
+
├─ Found: [design system path]
|
|
71
|
+
├─ Typography min: [e.g., text-xs]
|
|
72
|
+
├─ Radius standard: [e.g., rounded-sm]
|
|
73
|
+
├─ Forbidden: [list patterns]
|
|
74
|
+
└─ Reusing: [existing components]"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Phase 2: Implementation Standards [HIGH freedom]
|
|
80
|
+
|
|
81
|
+
### Typography Minimums
|
|
82
|
+
| Context | Minimum | Usage |
|
|
83
|
+
|---------|---------|-------|
|
|
84
|
+
| Body | `text-sm` (14px) | Primary content |
|
|
85
|
+
| Captions | `text-xs` (12px) | Labels, hints |
|
|
86
|
+
| Compact | `text-[10px]` | Dense dashboards only |
|
|
87
|
+
|
|
88
|
+
**Never use** `text-[8px]` or `text-[9px]` for readable content.
|
|
89
|
+
|
|
90
|
+
### Accessibility Requirements
|
|
91
|
+
| Check | Requirement |
|
|
92
|
+
|-------|-------------|
|
|
93
|
+
| Touch targets | ≥44×44px |
|
|
94
|
+
| Contrast | 4.5:1 text, 3:1 UI |
|
|
95
|
+
| Keyboard | `tabIndex`, focus styles |
|
|
96
|
+
| Motion | `prefers-reduced-motion` |
|
|
97
|
+
|
|
98
|
+
### Quick Reference
|
|
99
|
+
```
|
|
100
|
+
Typography: text-xs=12px, text-sm=14px, text-base=16px
|
|
101
|
+
Spacing: 1=4px, 2=8px, 3=12px, 4=16px, 6=24px, 8=32px
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Phase 3: Quality Checklist [LOW freedom — do not skip]
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
[ ] Uses design system tokens (no hardcoded values)
|
|
110
|
+
[ ] Extends existing components (no duplicates)
|
|
111
|
+
[ ] Typography ≥ text-xs for readable content
|
|
112
|
+
[ ] Touch targets ≥ 44px
|
|
113
|
+
[ ] Focus states visible
|
|
114
|
+
[ ] prefers-reduced-motion respected
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Common Fixes
|
|
118
|
+
| Issue | Fix |
|
|
119
|
+
|-------|-----|
|
|
120
|
+
| Tiny text | `text-[9px]` → `text-xs` |
|
|
121
|
+
| Bold weights | `font-bold` → `font-medium` |
|
|
122
|
+
| Large radius | `rounded-lg` → `rounded-sm` |
|
|
123
|
+
| Spin animation | `animate-spin` → `animate-pulse` |
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Anti-Generic Checklist
|
|
128
|
+
|
|
129
|
+
Undirected drafts land on the same few defaults; the check is concrete only when they are named:
|
|
130
|
+
- [ ] Inter / Roboto / Arial as the display or body face
|
|
131
|
+
- [ ] Purple (violet/indigo) gradient on white
|
|
132
|
+
- [ ] Cream / off-white page background
|
|
133
|
+
- [ ] Italic accent words inside headlines
|
|
134
|
+
- [ ] "01 / 02 / 03" numbered section labels
|
|
135
|
+
- [ ] Monospace eyebrow labels on a non-code product
|
|
136
|
+
- [ ] Pill-shaped (fully rounded) buttons as the house button
|
|
137
|
+
- [ ] Three equal cards in a row as the default section layout
|
|
138
|
+
|
|
139
|
+
Extend this list with whatever the first draft used instead.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
> **Remember:** The codebase's design system is the source of truth. Search before creating. Reuse before reinventing.
|