@kensaurus/skills 0.0.0-stage → 2.0.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 +1761 -0
- package/LICENSE +21 -0
- package/NOTICE +13 -0
- package/README.md +820 -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 +93 -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 +296 -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 +154 -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 +379 -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 +304 -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-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 +242 -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 +104 -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 +387 -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 +296 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: enhance-email-deliverability
|
|
3
|
+
description: >
|
|
4
|
+
Audit and fix email deliverability: SPF, DKIM, DMARC, reputation, bounces
|
|
5
|
+
and complaints, list hygiene, unsubscribe compliance. Use when "emails go to
|
|
6
|
+
spam", "set up SPF/DKIM", or "check deliverability". Templates →
|
|
7
|
+
design-email.
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# enhance-email-deliverability — Inbox placement & lawful send
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED.** Scoring auth/hygiene
|
|
14
|
+
`[HIGH freedom]`; DNS/config apply `[LOW freedom — after approval]`.
|
|
15
|
+
Audit-and-fix. Templates stay on `design-email`.
|
|
16
|
+
|
|
17
|
+
Close the gap between "the email sends" and "the email arrives". A beautiful
|
|
18
|
+
transactional template in spam is a broken signup flow.
|
|
19
|
+
|
|
20
|
+
Deliverability = authentication + reputation + hygiene + compliance. Miss any
|
|
21
|
+
one and placement collapses.
|
|
22
|
+
|
|
23
|
+
**Audit first. Apply DNS/config on approval.** Template markup stays on
|
|
24
|
+
`design-email`.
|
|
25
|
+
|
|
26
|
+
## This skill vs neighbors
|
|
27
|
+
|
|
28
|
+
| Skill | Owns |
|
|
29
|
+
|---|---|
|
|
30
|
+
| **enhance-email-deliverability** (this) | SPF/DKIM/DMARC, bounces, complaints, unsubscribe headers |
|
|
31
|
+
| `design-email` | Template markup, copy, React Email / MJML |
|
|
32
|
+
| `plan-privacy-compliance` | Consent to collect; this owns consent *to send* |
|
|
33
|
+
| `audit-analytics` | Whether open/click events fire (not inbox placement) |
|
|
34
|
+
|
|
35
|
+
"Build a welcome email" alone → `design-email`; this skill owns inbox placement, not templates.
|
|
36
|
+
|
|
37
|
+
## How to reason
|
|
38
|
+
|
|
39
|
+
1. **Observe** — SPF/DKIM/DMARC records and a real message's Authentication-Results
|
|
40
|
+
2. **Interpret** — pass raw SPF/DKIM but fail alignment? `+all`? DNS-only DKIM?
|
|
41
|
+
3. **Classify** — auth fail / hygiene hole / compliance miss / template (hand off)
|
|
42
|
+
4. **Severity** — no DMARC or `+all` blocks inbox placement
|
|
43
|
+
|
|
44
|
+
## Worked example
|
|
45
|
+
|
|
46
|
+
> **Observe:** one SPF with `+all`; DKIM TXT present; no DMARC; marketing and
|
|
47
|
+
> password-resets share `example.com`.
|
|
48
|
+
> **Interpret:** anyone can spoof; Gmail/Yahoo bulk will fail; a campaign
|
|
49
|
+
> complaint can sink transactional mail.
|
|
50
|
+
> **Classify:** auth fail + domain mixing.
|
|
51
|
+
> **Fix:** SPF `-all` (or `~all` while warming), DMARC `p=none`+`rua` then
|
|
52
|
+
> tighten, split transactional vs marketing domains — apply DNS only after approval.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Phase 0 — Detect sending setup [HIGH freedom]
|
|
57
|
+
|
|
58
|
+
- Provider: Resend / Postmark / SES / SendGrid / Mailgun / SMTP
|
|
59
|
+
- Sending domain(s) and DNS host
|
|
60
|
+
- Transactional vs marketing — **they should not share a domain**
|
|
61
|
+
- Where templates live (hand content issues to `design-email`)
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Phase 1 — Authentication (pass/fail gate) [HIGH freedom; headers not DNS-only]
|
|
66
|
+
|
|
67
|
+
**SPF** — Authorizes the provider. Exactly one record. Under 10 DNS lookups.
|
|
68
|
+
Not `+all`.
|
|
69
|
+
|
|
70
|
+
**DKIM** — Signing on at the provider; public key in DNS; **real message
|
|
71
|
+
headers** signed (not DNS-only). 2048-bit keys.
|
|
72
|
+
|
|
73
|
+
**DMARC** — Record present. `p=none` (monitor) vs `quarantine` / `reject`.
|
|
74
|
+
`rua` reporting address. Gmail/Yahoo require DMARC for bulk senders.
|
|
75
|
+
**Alignment:** visible From domain matches SPF/DKIM domains. Misalignment
|
|
76
|
+
passes raw SPF/DKIM and still fails DMARC.
|
|
77
|
+
|
|
78
|
+
**PTR / dedicated IP** — if self-hosted or dedicated: PTR set, warmed, not
|
|
79
|
+
blocklisted.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Phase 2 — Reputation & hygiene [HIGH freedom]
|
|
84
|
+
|
|
85
|
+
**Bounces** — Hard bounces via webhook → suppression list honored on every send.
|
|
86
|
+
|
|
87
|
+
**Complaints** — Feedback loops / provider webhooks → immediate suppress.
|
|
88
|
+
|
|
89
|
+
**List hygiene (marketing)** — Opted-in only (cross-check
|
|
90
|
+
`plan-privacy-compliance`). No purchased lists. Inactive addresses removed.
|
|
91
|
+
|
|
92
|
+
**Sending patterns** — Warm new domains. Separate transactional vs marketing
|
|
93
|
+
so a campaign complaint does not sink password resets.
|
|
94
|
+
|
|
95
|
+
**Content flags** — Image-only, spammy phrasing, broken links, missing
|
|
96
|
+
plain-text → `design-email`.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Phase 3 — Compliance footer [HIGH freedom]
|
|
101
|
+
|
|
102
|
+
- Marketing: functional unsubscribe **and** one-click `List-Unsubscribe`
|
|
103
|
+
headers (Gmail/Yahoo bulk). Transactional is exempt only if it is genuinely
|
|
104
|
+
transactional.
|
|
105
|
+
- Physical address + sender ID — CAN-SPAM (US) and Japan 特定電子メール法
|
|
106
|
+
for advertising mail.
|
|
107
|
+
- Unsubscribes honored on the *next* send.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Definition of Done
|
|
112
|
+
|
|
113
|
+
- [ ] Streams identified and separated
|
|
114
|
+
- [ ] SPF / DKIM (real headers) / DMARC + alignment scored
|
|
115
|
+
- [ ] Bounce + complaint → suppression list
|
|
116
|
+
- [ ] Consent + inactive policy noted
|
|
117
|
+
- [ ] Warming addressed if cold
|
|
118
|
+
- [ ] One-click unsubscribe on marketing; legal footer present
|
|
119
|
+
- [ ] Template flags handed to `design-email`
|
|
120
|
+
- [ ] DNS/config applied only after approval
|
|
121
|
+
|
|
122
|
+
## Self-critique before applying DNS [LOW freedom — do not skip]
|
|
123
|
+
|
|
124
|
+
1. **Real headers** — DKIM scored from a sent message, not DNS-only
|
|
125
|
+
2. **Alignment** — From domain matches SPF/DKIM domains
|
|
126
|
+
3. **Streams split** — marketing must not share the transactional domain
|
|
127
|
+
4. **Right owner** — markup/copy → `design-email`
|
|
128
|
+
5. **Apply only on approval**
|
|
129
|
+
|
|
130
|
+
## Output format
|
|
131
|
+
|
|
132
|
+
1. **Auth table** — SPF / DKIM / DMARC / alignment — pass/fail + exact fix
|
|
133
|
+
2. **Hygiene** — bounce / complaint / list / warming
|
|
134
|
+
3. **Compliance** — unsubscribe / footer / law
|
|
135
|
+
4. **Fix plan** — auth first, then hygiene, then compliance
|
|
136
|
+
5. Apply approved DNS/config; templates → `design-email`
|
|
137
|
+
|
|
138
|
+
## Related
|
|
139
|
+
|
|
140
|
+
- `design-email` — markup and copy
|
|
141
|
+
- `plan-privacy-compliance` — consent to collect / to mail
|
|
142
|
+
- `audit-analytics` — open/click instrumentation
|
|
143
|
+
- `backend-patterns` — webhook + suppression store
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: enhance-growth-loops
|
|
3
|
+
description: >
|
|
4
|
+
Add growth loops to a live product: a "powered by" badge, shareable
|
|
5
|
+
artifacts, invites and referral credit, each with K-factor events. Use when
|
|
6
|
+
"referral program", "viral loop", "powered by badge", or "get users to
|
|
7
|
+
invite".
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# enhance-growth-loops — Output that recruits the next user
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED.** Which loop fits the product `[HIGH freedom]`;
|
|
14
|
+
consent for invites, badge rules, event names, and per-loop measurement
|
|
15
|
+
`[LOW freedom — run exactly]`.
|
|
16
|
+
|
|
17
|
+
Apply-now. A funnel spends acquisition; a loop reinvests it — the output of
|
|
18
|
+
one user (a shared artifact, a badge on their site, an invite) becomes the
|
|
19
|
+
input for the next. Build one or two loops, measure each separately, and stop
|
|
20
|
+
calling a funnel step a loop.
|
|
21
|
+
|
|
22
|
+
## This skill vs neighbors
|
|
23
|
+
|
|
24
|
+
| Skill | Owns |
|
|
25
|
+
|---|---|
|
|
26
|
+
| **enhance-growth-loops** (this) | Badge, share, invite, referral mechanics and their events |
|
|
27
|
+
| `enhance-web-conversion` | Landing/pricing copy and upgrade prompts |
|
|
28
|
+
| `enhance-onboarding` | Getting the *invited* user to value (loop closes there) |
|
|
29
|
+
| `backend-patterns` | Referral credit ledger, idempotent reward grants |
|
|
30
|
+
| `audit-analytics` | Taxonomy the loop events must fit |
|
|
31
|
+
| `plan-gtm` | Chose the loop in its channel plan |
|
|
32
|
+
|
|
33
|
+
Do **not** fire for "write the referral email" alone → `design-email`.
|
|
34
|
+
|
|
35
|
+
## How to reason
|
|
36
|
+
|
|
37
|
+
1. **Loop** — what user output can carry the product to a stranger, and who sees it?
|
|
38
|
+
2. **Exposure** — how many strangers per active user per month, realistically?
|
|
39
|
+
3. **Conversion** — of those, how many can reach value without talking to anyone?
|
|
40
|
+
4. **Reinvest** — what does the new user produce that feeds the same loop?
|
|
41
|
+
5. **Measure** — K = exposures × conversion per user; one K per loop, never blended
|
|
42
|
+
|
|
43
|
+
## Worked example
|
|
44
|
+
|
|
45
|
+
> **Loop:** a photo-pairing app produces a shared result page per session.
|
|
46
|
+
> **Exposure:** ~3 recipients per session view the page; "Made with …" footer.
|
|
47
|
+
> **Conversion:** page has a one-tap "try it" that opens the product ungated → value before signup.
|
|
48
|
+
> **Reinvest:** the recipient's first session produces another shared page.
|
|
49
|
+
> **Measure:** `share_created`, `share_viewed { referrer }`, `loop_signup { loop: "share" }`; K ≈ 3 × 0.04 = 0.12 per session.
|
|
50
|
+
|
|
51
|
+
## Self-critique before reporting
|
|
52
|
+
|
|
53
|
+
- **One K per loop** — badge, share, and invite each have their own exposure and conversion events
|
|
54
|
+
- **Consent** — invites are user-initiated, single-send, with the recipient's opt-out; no contact-list scraping
|
|
55
|
+
- **Badge honest** — removable on paid plans; links to a page that says what the product did
|
|
56
|
+
- **Value before signup** — the landing side of every loop shows the artifact before asking for an account
|
|
57
|
+
- **Right owner** — copy → `enhance-web-conversion`; reward ledger → `backend-patterns`
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Loop catalogue [HIGH freedom — choose one or two]
|
|
62
|
+
|
|
63
|
+
| Loop | Mechanism | Numbers to expect | Build notes |
|
|
64
|
+
|---|---|---|---|
|
|
65
|
+
| **Powered-by badge** | free plan shows "Made with X" on public output | 0.5–3% conversion, near-total exposure of every viewer | removable on paid; links to a "what this is" page with the artifact visible |
|
|
66
|
+
| **Shareable artifact** | result page / export / public dashboard | exposure = recipients per share | ungated view; one-tap "try with your own"; OG image of the artifact |
|
|
67
|
+
| **Templates & galleries** | users publish templates others clone | slow start, compounding | attribution to creator; clone = activation event |
|
|
68
|
+
| **Invite / collaboration** | product is better with a teammate | warm invites convert 10–25% | invite flow inside the value moment; invitee lands on the shared object |
|
|
69
|
+
| **Referral credit** | both sides get credit, storage, or a month | SaaS referral rate ~4.75%, referred conversion ~7.9%, top quartile 12%+ | idempotent grant on the *referred user's activation*, not signup; fraud cap per referrer |
|
|
70
|
+
| **Public changelog / build in public** | releases as content | content loop, not viral | pairs with `docs-launch-kit` |
|
|
71
|
+
|
|
72
|
+
Value before signup lifts referred conversion 2–5× — every loop's landing
|
|
73
|
+
side shows the artifact first.
|
|
74
|
+
|
|
75
|
+
## Procedure
|
|
76
|
+
|
|
77
|
+
### 1. Pick and size [HIGH freedom]
|
|
78
|
+
Estimate exposure and conversion per active user from current data (or write
|
|
79
|
+
**unmeasured**). A loop with K < 0.05 is a nice touch, not a channel; say so.
|
|
80
|
+
|
|
81
|
+
### 2. Build the artifact side [HIGH freedom]
|
|
82
|
+
Public route renders the artifact without auth; OG tags carry a real
|
|
83
|
+
screenshot (`enhance-web-seo` for meta); one primary "try it" action that
|
|
84
|
+
lands the stranger in the product's ungated path (`enhance-onboarding`).
|
|
85
|
+
|
|
86
|
+
### 3. Build the ask [LOW freedom — rules]
|
|
87
|
+
- Badge: on free-plan output only; removable for paid; alt text says what the product is.
|
|
88
|
+
- Invite: user types or picks recipients; one email per recipient per invite; recipient can opt out of future invites; no address-book import without explicit per-send confirmation.
|
|
89
|
+
- Referral: unique link or code; reward granted once, idempotently, when the referred user hits `activated`; per-referrer cap; terms visible.
|
|
90
|
+
|
|
91
|
+
### 4. Events [LOW freedom — names]
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
badge_viewed { host } · badge_clicked
|
|
95
|
+
share_created { kind } · share_viewed { referrer } · share_cta_clicked
|
|
96
|
+
invite_sent { count } · invite_accepted
|
|
97
|
+
referral_link_created · referral_signup · referral_activated · referral_reward_granted
|
|
98
|
+
loop_signup { loop }
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Consent-gated; no recipient PII in properties. Reconcile with `audit-analytics`.
|
|
102
|
+
|
|
103
|
+
### 5. Verify
|
|
104
|
+
- Public artifact renders logged-out; OG preview shows the artifact
|
|
105
|
+
- Invite sends once per recipient; opt-out honored (test with a second inbox)
|
|
106
|
+
- Referral reward granted exactly once on activation; cap enforced
|
|
107
|
+
- K per loop computed from events after 7 days (or **unmeasured** with the date it will be)
|
|
108
|
+
|
|
109
|
+
## Guardrails
|
|
110
|
+
|
|
111
|
+
- **No dark patterns** — no pre-checked "invite all", no fake "3 friends joined", no unremovable badge on paid.
|
|
112
|
+
- **Anti-spam** — rate limits on invites and shares; report/opt-out link on every invite.
|
|
113
|
+
- **Rewards on activation, not signup** — signup rewards get farmed.
|
|
114
|
+
- **One K per loop** — never blend loops into one "viral coefficient".
|
|
115
|
+
|
|
116
|
+
## Chains with
|
|
117
|
+
|
|
118
|
+
- **`plan-gtm`** → the loop named in the channel plan.
|
|
119
|
+
- **`enhance-onboarding`** → the invitee's path to value.
|
|
120
|
+
- **`backend-patterns`** → credit ledger, idempotency, rate limits.
|
|
121
|
+
- **`enhance-web-seo`** → OG and meta on public artifact routes.
|
|
122
|
+
- **`test-playwright`** → logged-out artifact view and invite path.
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: enhance-lifecycle-email
|
|
3
|
+
description: >
|
|
4
|
+
Lifecycle email from product events: activation nudges, trial expiry by
|
|
5
|
+
activated vs stalled, limit-reached upgrades, win-back, with exits and
|
|
6
|
+
consent. Use when "onboarding emails", "drip sequence", or "win-back
|
|
7
|
+
email". Templates → design-email.
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# enhance-lifecycle-email — Emails that arrive because something happened
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED.** Sequence content and cadence `[HIGH freedom]`;
|
|
14
|
+
trigger-before-timer rule, exit conditions, consent, idempotent sends, and
|
|
15
|
+
event names `[LOW freedom — run exactly]`.
|
|
16
|
+
|
|
17
|
+
Apply-now. Behavior-triggered sends are the primary path; timers are the
|
|
18
|
+
fallback for users who produce no signal. Every email is gated on a product
|
|
19
|
+
event, exits the moment the user does the thing, and reports its own
|
|
20
|
+
open/click/conversion. Templates come from `design-email`; inbox placement
|
|
21
|
+
from `enhance-email-deliverability`.
|
|
22
|
+
|
|
23
|
+
## This skill vs neighbors
|
|
24
|
+
|
|
25
|
+
| Skill | Owns |
|
|
26
|
+
|---|---|
|
|
27
|
+
| **enhance-lifecycle-email** (this) | Which email fires on which event, exits, cadence, measurement |
|
|
28
|
+
| `design-email` | Template design and copy craft for each message |
|
|
29
|
+
| `enhance-email-deliverability` | SPF/DKIM/DMARC, bounces, list hygiene |
|
|
30
|
+
| `enhance-onboarding` | The in-app path the emails point back to |
|
|
31
|
+
| `data-pipeline` | Idempotent scheduling / cron correctness for sends |
|
|
32
|
+
| `plan-privacy-compliance` | Consent basis and retention for marketing mail |
|
|
33
|
+
|
|
34
|
+
Do **not** fire for "design the welcome email" alone → `design-email`.
|
|
35
|
+
|
|
36
|
+
## How to reason
|
|
37
|
+
|
|
38
|
+
1. **Signal** — which product event (or its absence for N hours) says this user needs this email?
|
|
39
|
+
2. **Exit** — which event ends the sequence because the goal was reached?
|
|
40
|
+
3. **Track** — activated vs stalled users get different messages at the same calendar point
|
|
41
|
+
4. **Cadence** — spacing follows the product's time-to-value, not a default day-0/3/7
|
|
42
|
+
5. **Measure** — each send has delivered / opened / clicked / converted events tied to the trigger
|
|
43
|
+
|
|
44
|
+
## Worked example
|
|
45
|
+
|
|
46
|
+
> **Signal:** `signup_completed` with no `activated` after 24 h → "the one thing to try" email with a deep link to the sample-data path.
|
|
47
|
+
> **Exit:** `activated` fires → the activation track stops; the habit track starts.
|
|
48
|
+
> **Track:** trial day 11 — activated users get "here is what you built and what happens to it"; stalled users get "let us set it up with you" — no discount for an empty account.
|
|
49
|
+
> **Cadence:** TTV median for this product is ~2 h, so the fallback nudge is at 24 h, not day 3.
|
|
50
|
+
> **Measure:** `email_sent { sequence, step, trigger }` … `email_converted { goal }`; activation nudge → 14% of stalled users activate within 48 h.
|
|
51
|
+
|
|
52
|
+
## Self-critique before reporting
|
|
53
|
+
|
|
54
|
+
- **Trigger first** — every email names its product-event trigger; timers appear only as "no signal after N h" fallbacks
|
|
55
|
+
- **Exits present** — every sequence lists the event that stops it
|
|
56
|
+
- **Two tracks at expiry** — activated and stalled users receive different messages
|
|
57
|
+
- **Consent and unsubscribe** — transactional vs marketing classification stated; one-click unsubscribe on marketing; suppression list respected
|
|
58
|
+
- **Idempotent** — a retried job cannot send twice (`data-pipeline` pattern)
|
|
59
|
+
- **Right owner** — template craft → `design-email`; deliverability → `enhance-email-deliverability`
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Sequences [HIGH freedom — choose; each row optional]
|
|
64
|
+
|
|
65
|
+
| Sequence | Trigger | Exit | Notes |
|
|
66
|
+
|---|---|---|---|
|
|
67
|
+
| **Welcome** | `signup_completed` | — | one email; the single next action, not a feature tour |
|
|
68
|
+
| **Activation nudge** | no `activated` within TTV × 3 (fallback ≈ 24 h) | `activated` | deep link to the shortest path; users without the core action in 48 h are the highest churn risk |
|
|
69
|
+
| **Setup stall** | `setup_started` without `setup_completed` for 24 h | `setup_completed` | name the exact step left |
|
|
70
|
+
| **Habit** | `activated` | `habit_reached` | day-3 / day-7 value reminders keyed to what they created |
|
|
71
|
+
| **Trial expiry** | `trial_ends_at − 3d`, `−1d`, `0`, `+3d` | `checkout_completed` | **split by `activated`**: activated → what you built and what happens to it, price, one CTA; stalled → help to value, no discount |
|
|
72
|
+
| **Limit reached** | `limit_reached { resource }` | `checkout_completed` | what unlocks, price, one-click; mirrors the in-app prompt |
|
|
73
|
+
| **Win-back** | no session for 30 d (activated users only) | any session | one email, then stop; new-feature framing |
|
|
74
|
+
| **Dunning** | `payment_failed` | `payment_succeeded` | day 0 / 3 / 7; transactional |
|
|
75
|
+
|
|
76
|
+
Behavior-triggered sequences report roughly 3× the click-through and
|
|
77
|
+
markedly higher conversion than calendar drips (vendor-reported; treat as a
|
|
78
|
+
reason to test, not a board number). Late-trial emails matter: most trial
|
|
79
|
+
conversions happen in the second half — do not stop the sequence on day 7.
|
|
80
|
+
|
|
81
|
+
## Procedure
|
|
82
|
+
|
|
83
|
+
### 1. Map events [LOW freedom]
|
|
84
|
+
Confirm the product emits `signup_completed`, `setup_completed`, `activated`,
|
|
85
|
+
`habit_reached`, `limit_reached`, `trial_ends_at`, `checkout_completed`,
|
|
86
|
+
`payment_failed` (or their equivalents). Missing ones → `enhance-onboarding`
|
|
87
|
+
/ `audit-analytics` first; an email on an unmeasured trigger is a timer in
|
|
88
|
+
disguise.
|
|
89
|
+
|
|
90
|
+
### 2. Design the tracks [HIGH freedom]
|
|
91
|
+
Pick sequences from the table; write trigger, exit, audience, message goal,
|
|
92
|
+
and CTA for each step. Cadence from the measured TTV. Hand the copy brief to
|
|
93
|
+
`design-email`.
|
|
94
|
+
|
|
95
|
+
### 3. Wire [LOW freedom — rules]
|
|
96
|
+
- Provider: the one already in the repo (Resend, Postmark, SES, Customer.io, Loops); no second ESP.
|
|
97
|
+
- Each send keyed by `(user_id, sequence, step)` — idempotent; retries cannot double-send.
|
|
98
|
+
- Classification per email: transactional (dunning, expiry-day facts) vs marketing (nudges, win-back); marketing carries one-click unsubscribe and honors the suppression list; consent basis recorded (`plan-privacy-compliance` if unclear).
|
|
99
|
+
- Exits evaluated at send time, not enqueue time.
|
|
100
|
+
- Quiet hours and per-user daily cap (≤ 1 marketing email per day).
|
|
101
|
+
|
|
102
|
+
### 4. Events [LOW freedom — names]
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
email_sent { sequence, step, trigger }
|
|
106
|
+
email_delivered · email_opened · email_clicked { link }
|
|
107
|
+
email_converted { sequence, goal_event }
|
|
108
|
+
email_unsubscribed { sequence }
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 5. Verify
|
|
112
|
+
- Test user: trigger → email within the window; performing the exit event stops the next step (observe no send)
|
|
113
|
+
- Retry the job: exactly one send per `(user, sequence, step)`
|
|
114
|
+
- Unsubscribe → no further marketing mail; transactional still delivered
|
|
115
|
+
- Report: sequences, triggers, exits, first-week `email_converted` by sequence (or **unmeasured** with date)
|
|
116
|
+
|
|
117
|
+
## Guardrails
|
|
118
|
+
|
|
119
|
+
- **No timers as the default.** A calendar drip is the fallback for silence.
|
|
120
|
+
- **No discount for an empty account.** Stalled users get help, not a coupon.
|
|
121
|
+
- **Consent and classification stated per email.** Marketing without an unsubscribe does not ship.
|
|
122
|
+
- **One ESP.** Do not add a second provider to get a feature.
|
|
123
|
+
|
|
124
|
+
## Chains with
|
|
125
|
+
|
|
126
|
+
- **`enhance-onboarding`** → the events and the in-app path every email links to.
|
|
127
|
+
- **`design-email`** → templates and copy.
|
|
128
|
+
- **`enhance-email-deliverability`** → before the first sequence goes live.
|
|
129
|
+
- **`data-pipeline`** → idempotent scheduling.
|
|
130
|
+
- **`iterate-gtm-weekly`** → reads `email_converted` by sequence.
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: enhance-motion
|
|
3
|
+
description: >
|
|
4
|
+
Audit an existing app's motion, then apply one coherent, performant,
|
|
5
|
+
reduced-motion-safe pass. Use when "motion pass", "animate the app", or "add
|
|
6
|
+
micro-interactions across the app". One new animation → design-motion.
|
|
7
|
+
license: MIT
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# enhance-motion — Coherent Motion for an Existing App
|
|
11
|
+
|
|
12
|
+
**Degree of freedom: MIXED.** Tier and token judgment `[HIGH freedom]`; reduced-motion, GPU-only, and verify `[LOW freedom — run exactly]`.
|
|
13
|
+
|
|
14
|
+
Add motion to an app that already exists, without fragmenting its visual language.
|
|
15
|
+
The failure mode this prevents: bolting on one hero animation, three different easing
|
|
16
|
+
curves, and a heavyweight library where a CSS class would do — motion that fights the
|
|
17
|
+
design system instead of reinforcing it.
|
|
18
|
+
|
|
19
|
+
> **Motion must be coherent, purposeful, reduced-motion-safe, and 60fps.** Pick the
|
|
20
|
+
> **lightest tool that fits** each interaction. Every animation gets its timing and
|
|
21
|
+
> easing from a **motion-token SSOT**, not ad-hoc magic numbers.
|
|
22
|
+
|
|
23
|
+
This skill **applies** motion and verifies it. For a from-scratch motion cookbook (no
|
|
24
|
+
existing system to respect), use `design-motion`. For pure animation-perf triage, use
|
|
25
|
+
`audit-performance`.
|
|
26
|
+
|
|
27
|
+
**Before any browser interaction, read `protocol-browser-anti-stall` and apply it.**
|
|
28
|
+
|
|
29
|
+
## How to reason
|
|
30
|
+
|
|
31
|
+
1. **Inventory** — libraries, easings, durations, reduced-motion coverage
|
|
32
|
+
2. **Right-size** — lightest tier that fits; prefer what's already installed
|
|
33
|
+
3. **Tokenize** — one motion-token SSOT; no magic numbers
|
|
34
|
+
4. **Gate** — reduced-motion degrades; transform/opacity only; 60fps
|
|
35
|
+
|
|
36
|
+
## Worked example
|
|
37
|
+
|
|
38
|
+
> **Inventory:** Tailwind `duration-300` + one `framer-motion` modal; no reduced-motion; four easings.
|
|
39
|
+
> **Right-size:** buttons stay CSS; lists get Auto-Animate; modal stays Motion; no GSAP.
|
|
40
|
+
> **Tokenize:** `--motion-fast/base/slow` + three easings in the theme file.
|
|
41
|
+
> **Gate:** `motion-reduce:` zeros travel; layout props not animated; modal 60fps.
|
|
42
|
+
|
|
43
|
+
## Self-critique before reporting
|
|
44
|
+
|
|
45
|
+
- **Coherent** — same interaction shares one duration/easing
|
|
46
|
+
- **Reduced-motion** — spatial movement drops; essential opacity stays
|
|
47
|
+
- **GPU-only** — no width/height/top/left animation
|
|
48
|
+
- **Right owner** — one isolated new animation → `design-motion`; perf-only triage → `audit-performance`
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Phase 0 — Detect the design system and current motion [HIGH freedom]
|
|
53
|
+
|
|
54
|
+
### 0a. Applicability gate
|
|
55
|
+
|
|
56
|
+
This skill targets **web / React (or Vue/Svelte) UI**. If the repo is a CLI, library,
|
|
57
|
+
backend, or non-visual target, **bow out** and say so.
|
|
58
|
+
|
|
59
|
+
### 0b. Inventory the design system + motion state
|
|
60
|
+
|
|
61
|
+
Reuse the `audit-uiux-design-system` detection, then focus on motion:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Libraries already present
|
|
65
|
+
cat package.json | grep -iE "motion|framer|gsap|auto-animate|tw-animate|animate.css|react-spring"
|
|
66
|
+
# Existing CSS motion + Tailwind config
|
|
67
|
+
rg -n "@keyframes|animation:|transition:" -g "*.css"
|
|
68
|
+
rg -n "animate-|transition-|duration-|ease-" -g "*.{tsx,jsx,vue,svelte}" -c
|
|
69
|
+
# Existing JS motion
|
|
70
|
+
rg -n "motion\.|useSpring|AnimatePresence|useScroll|gsap|autoAnimate" -g "*.{tsx,jsx}" -c
|
|
71
|
+
# Reduced-motion support (critical)
|
|
72
|
+
rg -n "prefers-reduced-motion|motion-safe|motion-reduce|useReducedMotion" -g "*.{tsx,jsx,css}"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 0c. Record discovery
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
STACK: framework=<...> · CSS=<Tailwind v3/v4 / CSS Modules / ...> · UI lib=<...>
|
|
79
|
+
MOTION TODAY: libraries=<...> · easings in use=<list> · durations in use=<list>
|
|
80
|
+
REDUCED MOTION: honored? <yes/no — where>
|
|
81
|
+
INCOHERENCE FOUND: <e.g. 4 easing curves, 3 durations for the same interaction>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Phase 1 — Choose the tier + define the motion-token SSOT [HIGH freedom]
|
|
87
|
+
|
|
88
|
+
### 1a. Research (current)
|
|
89
|
+
|
|
90
|
+
Follow the `/research` protocol: Context7 for the chosen library's current API, Firecrawl
|
|
91
|
+
for current patterns dated to now. Anchor to versions actually installed. Motion (formerly
|
|
92
|
+
Framer Motion) is `motion` on npm.
|
|
93
|
+
|
|
94
|
+
### 1b. Right-size the library per interaction
|
|
95
|
+
|
|
96
|
+
Do **not** add every library. Pick the lightest tool that fits, and prefer what the repo
|
|
97
|
+
already uses if it's adequate:
|
|
98
|
+
|
|
99
|
+
| Tier | Tool | Use for |
|
|
100
|
+
|---|---|---|
|
|
101
|
+
| 1 — CSS utility | `tw-animate-css` (Tailwind v4 successor to `tailwindcss-animate`; shadcn's default) or existing Tailwind keyframes | fades, accordions, enter/exit utility classes, simple hovers |
|
|
102
|
+
| 2 — zero-config layout | `@formkit/auto-animate` | list/table add·remove·reorder, expanding sections — no config |
|
|
103
|
+
| 3 — component transitions | `motion` (motion.dev) — scoped to **component transitions, `AnimatePresence`, gestures, spring hovers** | modals, tabs, toasts, presence, drag |
|
|
104
|
+
| 4 — complex timelines | `gsap` — **only** when Tier 3 cannot express it | scroll narratives, sequenced SVG, scrubbed timelines |
|
|
105
|
+
| Reference | Kinetics (kinetics.colorion.co) | curated copy-paste pattern **source** — adapt to tokens; not a dependency |
|
|
106
|
+
|
|
107
|
+
State the chosen tier(s) and why. Keep the dependency footprint minimal.
|
|
108
|
+
|
|
109
|
+
### 1c. Define the motion-token SSOT
|
|
110
|
+
|
|
111
|
+
Motion values are tokens, coherent with the existing scale (collapse the incoherence found
|
|
112
|
+
in 0c into one set). Add to the token source (Tailwind theme / CSS variables):
|
|
113
|
+
|
|
114
|
+
```css
|
|
115
|
+
/* durations */ --motion-fast: 120ms; --motion-base: 200ms; --motion-slow: 320ms;
|
|
116
|
+
/* easings */ --ease-standard: cubic-bezier(0.2,0,0,1); /* enter/state */
|
|
117
|
+
--ease-emphasized: cubic-bezier(0.3,0,0,1); /* prominent */
|
|
118
|
+
--ease-exit: cubic-bezier(0.4,0,1,1); /* exit */
|
|
119
|
+
/* distance */ --motion-shift: 8px;
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
All animations reference these — no inline magic numbers. Micro-interactions ≤ ~150ms,
|
|
123
|
+
entrances ~200–320ms, exits faster than entrances.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Phase 2 — Apply motion, tier by tier [HIGH freedom]
|
|
128
|
+
|
|
129
|
+
Work interaction-by-interaction; prefer mechanical, token-driven edits. For each element,
|
|
130
|
+
use the lightest fitting tier from 1b.
|
|
131
|
+
|
|
132
|
+
- **Buttons / links / cards:** Tier 1 CSS — `hover`, `active` (scale 0.98), `focus-visible`
|
|
133
|
+
ring, using tokens. Distinct response per element type.
|
|
134
|
+
- **Lists / grids / expandable sections:** Tier 2 Auto-Animate — wrap the parent; items
|
|
135
|
+
animate on add/remove/reorder with zero per-item code.
|
|
136
|
+
- **Modals / dialogs / toasts / tabs / dropdowns:** Tier 3 Motion — `AnimatePresence` for
|
|
137
|
+
exit, backdrop fade + content scale/slide, tab indicator slide. Gestures (`drag`,
|
|
138
|
+
`whileHover`, `whileTap`) where they add feel.
|
|
139
|
+
- **Page/route transitions:** template/layout-level fade+shift, kept subtle (respect the
|
|
140
|
+
"component transitions only" scope — no heavyweight route choreography by default).
|
|
141
|
+
- **Scroll narratives / hero timelines:** Tier 4 GSAP only if genuinely needed.
|
|
142
|
+
|
|
143
|
+
Preserve all existing functionality and states — motion is additive. Never remove a
|
|
144
|
+
handler or state to "simplify."
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Phase 3 — Accessibility & performance gates [LOW freedom — run exactly]
|
|
149
|
+
|
|
150
|
+
- **Reduced motion:** every animation degrades under `prefers-reduced-motion: reduce`.
|
|
151
|
+
Use `useReducedMotion()` (Motion), `motion-safe:`/`motion-reduce:` (Tailwind), or a CSS
|
|
152
|
+
media query that drops durations to ~0. Essential feedback stays (opacity), spatial
|
|
153
|
+
movement is removed.
|
|
154
|
+
- **GPU-only:** animate `transform` / `opacity` only. No animating `width/height/top/left`.
|
|
155
|
+
- **No CLS:** transitions must not shift layout unexpectedly; reserve space.
|
|
156
|
+
- **Interruptibility:** enter/exit must not trap state if toggled rapidly.
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
rg -n "animate\[.*(width|height|top|left|margin)" -g "*.{tsx,css}" # flag layout-triggering
|
|
160
|
+
rg -n "prefers-reduced-motion|useReducedMotion|motion-reduce" -g "*.{tsx,css}" # confirm coverage
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Phase 4 — Verify and report [LOW freedom — do not skip]
|
|
166
|
+
|
|
167
|
+
- **playwright-cli:** navigate touched routes, capture before/after screenshots to
|
|
168
|
+
`.playwright-mcp/`, check `console` for errors, confirm animations run
|
|
169
|
+
and reduced-motion drops them (toggle emulation).
|
|
170
|
+
- **60fps:** spot-check in DevTools Performance for any Tier 3/4 animation.
|
|
171
|
+
- **Build/typecheck:** run the repo's commands; fix anything introduced.
|
|
172
|
+
|
|
173
|
+
```markdown
|
|
174
|
+
## Motion Enhancement — report
|
|
175
|
+
**Stack:** [..] **Tiers used:** CSS/tw-animate-css · Auto-Animate · Motion · (GSAP: y/n)
|
|
176
|
+
**Motion tokens:** durations [..] · easings [..] — single source in [file]
|
|
177
|
+
**Coherence fixed:** collapsed [N] easings → 3, [N] durations → 3
|
|
178
|
+
**Applied to:** buttons/cards (CSS), lists (Auto-Animate), modals/tabs/toasts (Motion), ...
|
|
179
|
+
**A11y:** prefers-reduced-motion honored across [N] components (evidence)
|
|
180
|
+
**Perf:** transform/opacity only; [component] verified 60fps; no CLS
|
|
181
|
+
**Verification:** build ✓ · console clean ✓ · before/after screenshots [paths]
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Related
|
|
187
|
+
|
|
188
|
+
- `design-motion` — from-scratch motion cookbook (Framer/Motion/GSAP/CSS patterns)
|
|
189
|
+
- `audit-uiux-design-system` — the broader visual coherency audit this builds on
|
|
190
|
+
- `audit-performance` — animation performance / Core Web Vitals triage
|
|
191
|
+
- `audit-accessibility` — reduced-motion and focus-order verification
|
|
192
|
+
- `housekeep-design` — if motion incoherence is part of wider design drift, consolidate first
|
|
193
|
+
- `protocol-browser-anti-stall` — required for the browser verification step
|