@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,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: enhance-skill-prompts
|
|
3
|
+
description: >
|
|
4
|
+
Upgrade how an existing SKILL.md instructs, not what it does: freedom, a
|
|
5
|
+
classification contract, one worked example, an evidence rubric, effort. Use
|
|
6
|
+
when "enhance this skill's prompts", "upgrade skill authoring", or "apply
|
|
7
|
+
the prompt playbook".
|
|
8
|
+
license: MIT
|
|
9
|
+
effort: high
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# enhance-skill-prompts — Upgrade HOW a skill instructs, never WHAT it does
|
|
13
|
+
|
|
14
|
+
**Degree of freedom: LOW-to-MEDIUM.** This is a fragile transformation. A
|
|
15
|
+
well-meant rewrite can change behavior. Follow the phases in order. Preserve
|
|
16
|
+
intent, scope, and family semantics exactly. If a change would alter
|
|
17
|
+
behavior, scope, or read-only / plan-only / apply-now stance, stop and flag
|
|
18
|
+
it instead.
|
|
19
|
+
|
|
20
|
+
Grounded in [docs/PROMPT-ENHANCEMENT-PLAYBOOK.md](../../docs/PROMPT-ENHANCEMENT-PLAYBOOK.md)
|
|
21
|
+
and the annotated exemplar
|
|
22
|
+
[references/exemplar-audit-auth-flows.md](references/exemplar-audit-auth-flows.md).
|
|
23
|
+
Live reference after the exemplar was applied:
|
|
24
|
+
`skills/audit-auth-flows/SKILL.md`. New skill from scratch →
|
|
25
|
+
`meta-skill-creator`.
|
|
26
|
+
|
|
27
|
+
## Phase 0 — Classify the skill [HIGH freedom]
|
|
28
|
+
|
|
29
|
+
Read the target SKILL.md and determine:
|
|
30
|
+
|
|
31
|
+
- **Family & register:** audit/plan (interpretive → mostly HIGH) vs
|
|
32
|
+
housekeep/deploy/migration (fragile sequences → LOW where a step must be
|
|
33
|
+
exact).
|
|
34
|
+
- **Judgment points:** triage, severity, root cause, winner-selection → T2/T3.
|
|
35
|
+
- **Fragile steps:** probes, baseline capture, destructive ops → T1 LOW.
|
|
36
|
+
- **Existing example:** is the `## Worked example` a real few-shot (chain plus output shape on a concrete case) or a placeholder?
|
|
37
|
+
- **Effort tier (T7):** which family the skill belongs to, and therefore which `effort:` it declares.
|
|
38
|
+
|
|
39
|
+
State the classification before editing. It decides which techniques apply.
|
|
40
|
+
|
|
41
|
+
## Phase 1 — Apply T1–T8 (only where they fit) [HIGH freedom]
|
|
42
|
+
|
|
43
|
+
Apply in this order. Skip any technique that does not fit and record why.
|
|
44
|
+
|
|
45
|
+
**T1 — Declare degrees of freedom.** Short register line under the H1.
|
|
46
|
+
Where mixed, tag fragile phases `[LOW freedom — run exactly]` and
|
|
47
|
+
interpretive ones `[HIGH freedom]`. Do not over-constrain interpretive
|
|
48
|
+
audits or under-constrain fragile sequences.
|
|
49
|
+
|
|
50
|
+
**T2 — One named-stage judgment frame.** The stages a conclusion must
|
|
51
|
+
pass through (audits: Observe → Interpret → Classify → Severity; plans:
|
|
52
|
+
Propose → Risk → Keep-working → Phase). Place it ONCE near the top and
|
|
53
|
+
reference it. It defines what a finding must contain, not how to think:
|
|
54
|
+
reasoning depth comes from `effort:` (T7), and generic "think step by
|
|
55
|
+
step" or "double-check" prose is dead weight on Opus 5.5.
|
|
56
|
+
|
|
57
|
+
**T3 — Exactly one worked example.** The chain AND the output shape on a
|
|
58
|
+
realistic case, labeled illustrative. Put it right after the T2 frame.
|
|
59
|
+
|
|
60
|
+
**T4 — Self-critique rubric before output.** Explicit, answerable checks
|
|
61
|
+
(evidenced-not-assumed, reproducible, severity-justified, right-owner,
|
|
62
|
+
no-false-safety). Plan skills: run this before presenting the burndown.
|
|
63
|
+
Opus 5.5 self-verifies unprompted, so each rubric line must name the
|
|
64
|
+
evidence it is checked against (a tool result, a rendered rect, a header,
|
|
65
|
+
a CI run); a line that is a generic re-check ("verify your work",
|
|
66
|
+
"double-check") is cut. Principle-based ("constitutional-style") checking
|
|
67
|
+
belongs here as a rubric, not a label.
|
|
68
|
+
|
|
69
|
+
**T5 — Terminology consistency.** One term per concept. Unify
|
|
70
|
+
gate/check/guard, finding/issue/problem, user/caller/client to the skill's
|
|
71
|
+
dominant term.
|
|
72
|
+
|
|
73
|
+
**T6 — Conciseness.** Cut restated context the agent already has. Never
|
|
74
|
+
trim a fragile step's exactness. Net tokens should usually drop even after
|
|
75
|
+
T2+T3.
|
|
76
|
+
|
|
77
|
+
**T7 — Effort routing.** Declare `effort:` in frontmatter by family:
|
|
78
|
+
audit / plan / judge / security / architecture → `high` (`xhigh` only for
|
|
79
|
+
the hardest planning, with a measured reason); mechanical, read-only,
|
|
80
|
+
formatting, handoff, inventory → `low`; ordinary implementation → omit
|
|
81
|
+
(Opus 5.5 defaults to `medium`, which matches Opus 5 at high). A read-only
|
|
82
|
+
inventory skill may add `context: fork` + `agent: Explore` to keep the main
|
|
83
|
+
context clean. Cursor ignores the key; `validate:skills` checks its value.
|
|
84
|
+
Effort is the only thinking control on Opus 5.5 — never steer depth with
|
|
85
|
+
prose ("think harder", "don't overthink", "double-check").
|
|
86
|
+
|
|
87
|
+
**T8 — Volume, shape, and communication.** Each rule once, at normal
|
|
88
|
+
volume, with its reason — drop MUST / NEVER / CRITICAL markers, "be
|
|
89
|
+
thorough", and update suppressors ("no preamble", "don't narrate"): Opus
|
|
90
|
+
5.5 follows instructions literally, so emphasis over-triggers and
|
|
91
|
+
suppressors leave the user blind between tool calls. State the success
|
|
92
|
+
condition instead of a prohibition list. Exception: frontend design
|
|
93
|
+
direction works best as *named* default patterns to avoid (cream
|
|
94
|
+
background, italic accent word in headlines, "01 / 02 / 03" section
|
|
95
|
+
labels, monospace labels, pill buttons, Inter / Roboto, purple gradients,
|
|
96
|
+
three equal cards) — "avoid a generic AI look" swaps one default for
|
|
97
|
+
another. Numbered steps only for fragile sequences (destructive ops, auth,
|
|
98
|
+
migrations, baseline capture); judgment phases get outcomes, constraints,
|
|
99
|
+
and how to verify. The always-on verification rule already asks for an
|
|
100
|
+
intent line, load-bearing notes and a standalone recap; do not repeat it
|
|
101
|
+
per skill and never suppress it ("no preamble", "hold findings"). Skills
|
|
102
|
+
that run unattended add one line saying when the turn may end.
|
|
103
|
+
|
|
104
|
+
## How to reason
|
|
105
|
+
|
|
106
|
+
1. **Observe** — existing H1 register, phases, examples, body length
|
|
107
|
+
2. **Interpret** — which of T1–T8 are missing vs already present as headings or keys
|
|
108
|
+
3. **Classify** — apply / skip-with-reason / stop (would change behavior)
|
|
109
|
+
4. **Severity** — a trigger or stance change is an invalid edit
|
|
110
|
+
|
|
111
|
+
## Worked example
|
|
112
|
+
|
|
113
|
+
> **Observe:** `meta-skill-creator` has T1 and a technique table; no `## Worked example`.
|
|
114
|
+
> **Interpret:** the table mention is not T3; the agent still has no few-shot.
|
|
115
|
+
> **Classify:** add one `## Worked example` + `## Self-critique` after the table; do not rewrite Anatomy or frontmatter.
|
|
116
|
+
> **Invariant:** description triggers unchanged; still "create a pack SKILL.md".
|
|
117
|
+
|
|
118
|
+
## Self-critique before reporting
|
|
119
|
+
|
|
120
|
+
- **Headings exist** — T3 is `## Worked example`, T4 is `## Self-critique…`, not a table cell
|
|
121
|
+
- **Behavior same** — no phase-order, stance, or trigger change
|
|
122
|
+
- **One example** — not a second tutorial
|
|
123
|
+
- **Right owner** — new skill from scratch → `meta-skill-creator`
|
|
124
|
+
|
|
125
|
+
## Phase 2 — Preserve invariants [LOW freedom — run exactly]
|
|
126
|
+
|
|
127
|
+
The edit is invalid if any of these break:
|
|
128
|
+
|
|
129
|
+
- Same **name, description triggers, and scope** — routing must not change.
|
|
130
|
+
- Same **behavior and stance** — read-only stays read-only; apply-now stays
|
|
131
|
+
apply-now; plan-only stays plan-only; phase order and Definition-of-Done
|
|
132
|
+
coverage unchanged in substance.
|
|
133
|
+
- **House limits** — description ≤320 chars (same folding as
|
|
134
|
+
`scripts/validate-skills.mjs`), body <500 lines, name matches dir.
|
|
135
|
+
- **Frontmatter:** `name` and `description` untouched unless a within-budget
|
|
136
|
+
description change is explicitly requested. Adding or adjusting `effort:`
|
|
137
|
+
(T7) is allowed and is not a routing change.
|
|
138
|
+
- Cross-references use live skill names; the responsive skill is `audit-responsive`.
|
|
139
|
+
- Strip `<!-- TECHNIQUE -->` comments from live SKILL.md (they belong only
|
|
140
|
+
in the exemplar).
|
|
141
|
+
|
|
142
|
+
If any invariant would break, revert that change and note it.
|
|
143
|
+
|
|
144
|
+
## Phase 3 — Report the diff [LOW freedom — do not skip]
|
|
145
|
+
|
|
146
|
+
Do not silently rewrite. Present, per skill:
|
|
147
|
+
|
|
148
|
+
1. **Classification** — family | register | judgment points | fragile steps | has-example?
|
|
149
|
+
2. **Technique table** — technique | applied? | where | why-skipped-if-not
|
|
150
|
+
3. **Section diffs** — before/after for each change
|
|
151
|
+
4. **Invariant check** — each invariant | holds?
|
|
152
|
+
|
|
153
|
+
Apply on approval. For a batch, finish one skill as reference, get
|
|
154
|
+
sign-off, then proceed.
|
|
155
|
+
|
|
156
|
+
## Definition of Done
|
|
157
|
+
|
|
158
|
+
- [ ] Skill classified before editing
|
|
159
|
+
- [ ] T1–T8 applied or skipped with a reason
|
|
160
|
+
- [ ] Invariants verified; frontmatter triggers unchanged
|
|
161
|
+
- [ ] Diff reported; applied only on approval
|
|
162
|
+
|
|
163
|
+
## Related
|
|
164
|
+
|
|
165
|
+
- `meta-skill-creator` — new SKILL.md from scratch
|
|
166
|
+
- `audit-skill-conflicts` — routing / coherence after a batch
|
|
167
|
+
- `validate:skills` — per-file spec after edits
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
> Teaching copy of `audit-auth-flows` with technique annotations (`<!-- TECHNIQUE -->`).
|
|
2
|
+
> Live shipped file (comments stripped; pack frontmatter unchanged):
|
|
3
|
+
> `skills/audit-auth-flows/SKILL.md`.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
name: audit-auth-flows
|
|
7
|
+
description: >
|
|
8
|
+
Read-only audit of app-layer auth: route×gate matrix, session lifecycle,
|
|
9
|
+
OAuth, provider traps (getSession vs getUser, middleware-only gates,
|
|
10
|
+
CVE-2025-29927). Use when "audit our auth" or "check middleware protection".
|
|
11
|
+
RLS → plan-rls-audit.
|
|
12
|
+
license: MIT
|
|
13
|
+
effort: high
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<!-- TECHNIQUE: effort routing. A security audit is judgment work, so the
|
|
17
|
+
frontmatter declares `effort: high`; the model default is medium. Claude Code
|
|
18
|
+
honors the key, Cursor ignores it. Mechanical fixed-sequence skills declare
|
|
19
|
+
`effort: low`. Read-only does not mean low: audits are read-only and high. -->
|
|
20
|
+
|
|
21
|
+
# audit-auth-flows — Middleware is edge routing, not a security boundary
|
|
22
|
+
|
|
23
|
+
## Degree of freedom: MIXED — declared per phase
|
|
24
|
+
|
|
25
|
+
<!-- TECHNIQUE: T1 degree-of-freedom declaration (Anthropic official). The
|
|
26
|
+
skill states its register up front and per phase, so the agent knows where
|
|
27
|
+
to reason freely and where to follow exact steps. It pairs with the `effort:`
|
|
28
|
+
key above: the register line says where to reason freely; the effort key says
|
|
29
|
+
how deep. This header is the single most important addition. -->
|
|
30
|
+
|
|
31
|
+
- Phases 0–4 (discovery, judgment): **[HIGH freedom]** — reason about what
|
|
32
|
+
you find; checklists prompt investigation, they are not tick-scripts.
|
|
33
|
+
- Phase 5 (live probes) and the getSession grep: **[LOW freedom — run
|
|
34
|
+
exactly]** — a skipped probe is an unproven claim, not a saved step.
|
|
35
|
+
|
|
36
|
+
Read-only. Map the auth surface and prove, route by route, that identity is
|
|
37
|
+
verified where it matters. Then stop. Hand fixes to a follow-up session.
|
|
38
|
+
|
|
39
|
+
**2026 consensus (official, post CVE-2025-29927):** Next.js middleware
|
|
40
|
+
runs before cache and routing. Vercel: *"We do not recommend Middleware
|
|
41
|
+
to be the sole method of protecting routes in your application."* An
|
|
42
|
+
audit that only reads `middleware.ts` and declares the app safe has
|
|
43
|
+
missed the point. Defense in depth: edge + route handler / server action
|
|
44
|
+
+ data layer. Each layer covers a different part of the request path.
|
|
45
|
+
|
|
46
|
+
## How to reason in this audit
|
|
47
|
+
|
|
48
|
+
<!-- TECHNIQUE: T2 named-stage chain (not "think step by step"). Thinking is
|
|
49
|
+
always on for the model and `effort` in frontmatter sets its depth, so this
|
|
50
|
+
is not a reasoning script: it is the record shape every finding carries, so
|
|
51
|
+
no finding can be written without its evidence, its meaning, its bucket, and
|
|
52
|
+
a justified severity. Placed once, referenced by each phase. -->
|
|
53
|
+
|
|
54
|
+
Every finding is recorded in this shape, in this order:
|
|
55
|
+
|
|
56
|
+
1. **Observe** — what does the code/probe actually show? (quote the line or the response)
|
|
57
|
+
2. **Interpret** — what does that mean for who can reach what? (don't assume intent)
|
|
58
|
+
3. **Classify** — real exposure / defense-in-depth-gap / correct-as-is / needs-a-probe
|
|
59
|
+
4. **Severity** — by blast radius: unauth data access & auth bypass = critical;
|
|
60
|
+
everything else justified against what an attacker actually gains.
|
|
61
|
+
|
|
62
|
+
If you cannot complete Interpret from static code, it is a **needs-a-probe**
|
|
63
|
+
item for Phase 5, not a conclusion.
|
|
64
|
+
|
|
65
|
+
## Worked example
|
|
66
|
+
|
|
67
|
+
<!-- TECHNIQUE: T3 one worked example, shown in the chain's order AND the
|
|
68
|
+
finding-row shape. Examples pin format — the model matches their length and
|
|
69
|
+
structure — so label it illustrative, keep it realistic, and add a second only
|
|
70
|
+
where it varies the judgment (a different Classify outcome), not a second
|
|
71
|
+
tutorial. The output-format section carries the rest. -->
|
|
72
|
+
|
|
73
|
+
> **Observe:** `middleware.ts` matcher is `['/dashboard/:path*']`. The route
|
|
74
|
+
> `/api/orders/[id]` has no check in the handler.
|
|
75
|
+
> **Interpret:** API routes are not under the matcher, so middleware never
|
|
76
|
+
> runs on them; the order endpoint is reachable without auth. Layout-level
|
|
77
|
+
> checks don't cover direct API calls.
|
|
78
|
+
> **Classify:** real exposure (not merely a defense-in-depth gap — data is
|
|
79
|
+
> actually reachable).
|
|
80
|
+
> **Severity:** critical — unauthenticated data access.
|
|
81
|
+
> **Finding row:** `/api/orders/[id]` | edge+route | critical | matcher
|
|
82
|
+
> excludes /api; handler has no `getUser()` check | probe P5-a confirmed
|
|
83
|
+
> 200 while logged out.
|
|
84
|
+
|
|
85
|
+
## This skill vs neighbors
|
|
86
|
+
|
|
87
|
+
| Skill | Owns |
|
|
88
|
+
|---|---|
|
|
89
|
+
| **audit-auth-flows** (this) | Session lifecycle, route×gate matrix, OAuth, provider traps |
|
|
90
|
+
| `audit-security` | OWASP checklist (injection, headers, deps) — may fix inline |
|
|
91
|
+
| `plan-security-audit` | Plan-only hardening burndown |
|
|
92
|
+
| `plan-rls-audit` | Data-layer who-can-read-which-rows |
|
|
93
|
+
| `plan-secrets-audit` | Where `service_role` / keys live |
|
|
94
|
+
| `plan-privacy-compliance` | Consent / policy vs collection — not session gates |
|
|
95
|
+
| `backend-patterns` | Building the middleware / guard fixes after this audit |
|
|
96
|
+
| `test-exploratory` | Live guest vs logged-in probe (runtime complement to this static matrix) |
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Phase 0 — Detect the auth stack [HIGH freedom]
|
|
101
|
+
|
|
102
|
+
Identify: provider (Supabase Auth / NextAuth / Clerk / Auth0 / custom),
|
|
103
|
+
framework protection (Next.js middleware + `matcher`, route guards,
|
|
104
|
+
server-action checks), session transport (cookie vs `localStorage` vs
|
|
105
|
+
`Authorization` header), token model (JWT vs server session). Enumerate
|
|
106
|
+
pages, API routes, server actions, edge functions, admin areas. Record
|
|
107
|
+
the pinned framework version — auth CVEs are version-gated.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Phase 1 — Route × gate coverage matrix [HIGH freedom — the centerpiece]
|
|
112
|
+
|
|
113
|
+
Every protected route / action, one row. Apply the reasoning chain per row.
|
|
114
|
+
|
|
115
|
+
| route/action | intended access | gate that protects it | verified server-side? | data-layer backstop? |
|
|
116
|
+
|
|
117
|
+
Hunt the gaps this exposes:
|
|
118
|
+
|
|
119
|
+
- **Matcher holes** — `config.matcher` misses a protected path. API
|
|
120
|
+
routes and server actions often bypass page middleware — each needs
|
|
121
|
+
its own check.
|
|
122
|
+
- **Layout-only protection** — a layout/wrapper is a client-side
|
|
123
|
+
illusion. It does not gate data fetches or direct API/action calls.
|
|
124
|
+
- **Middleware-as-only-gate** — the CVE-2025-29927 class. Any route
|
|
125
|
+
where middleware is the *sole* authorization layer is a finding
|
|
126
|
+
**regardless of framework version or host**. Patching the CVE is not
|
|
127
|
+
defense in depth.
|
|
128
|
+
- **Server action exposure** — Next.js server actions are POST
|
|
129
|
+
endpoints callable directly. Each mutating action must check identity
|
|
130
|
+
itself.
|
|
131
|
+
- **Unlisted routes** — grep the router; do not trust the matcher list.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Phase 2 — Provider and framework traps [HIGH freedom, except the grep = LOW]
|
|
136
|
+
|
|
137
|
+
**Supabase (check first on this stack):**
|
|
138
|
+
|
|
139
|
+
- **[LOW freedom — run exactly]** `grep -rn "getSession(" <server-code-paths>`.
|
|
140
|
+
<!-- TECHNIQUE: T1 applied to the fragile bit. Promoted from advisory
|
|
141
|
+
prose to an explicit "run exactly" step so the agent cannot reason past
|
|
142
|
+
the grep. -->
|
|
143
|
+
Treat every server-side hit as a finding until proven client-side-only.
|
|
144
|
+
Official JS docs: cookie/storage values *may not be authentic*;
|
|
145
|
+
`getSession()` is strongly advised against for authorization.
|
|
146
|
+
`getUser()` performs a network request to the Auth server and *can* be
|
|
147
|
+
used to base authorization rules. Newer SSR guides also use
|
|
148
|
+
`getClaims()` to *refresh* cookies — that is not a substitute for
|
|
149
|
+
verifying identity at the handler.
|
|
150
|
+
- Service-role key on any client-exposed path → `plan-secrets-audit`.
|
|
151
|
+
RLS assumed but not enforcing → `plan-rls-audit` (data-layer
|
|
152
|
+
backstop; this skill is the app layer above it).
|
|
153
|
+
- `autoRefreshToken` disabled without manual refresh; JWT expiry
|
|
154
|
+
absurdly short (<300s) hammering refresh.
|
|
155
|
+
|
|
156
|
+
**Next.js CVE-2025-29927** (GHSA-f82v-jwr5-mffw, critical): bypass
|
|
157
|
+
authorization if the check occurs only in middleware, via the internal
|
|
158
|
+
`x-middleware-subrequest` header. **Patched:** 12.3.5 / 13.5.9 /
|
|
159
|
+
14.2.25 / 15.2.3. **Impacted:** self-hosted `next start` and
|
|
160
|
+
`output: 'standalone'`. Vercel-hosted apps were incidentally
|
|
161
|
+
protected; Netlify and Cloudflare Workers were not affected. Workaround
|
|
162
|
+
if unpatched: drop `x-middleware-subrequest` before it hits Next.
|
|
163
|
+
If below the fix → P0 *and* a defense-in-depth finding. Also sweep
|
|
164
|
+
later Next.js auth CVEs (do not treat 29927 as the only one).
|
|
165
|
+
|
|
166
|
+
**General rule:** any "the framework enforces auth at the edge"
|
|
167
|
+
assumption is a finding, whatever the framework.
|
|
168
|
+
|
|
169
|
+
**NextAuth / Clerk / Auth0** — session strategy (JWT vs database),
|
|
170
|
+
callback / redirect validation, and whether `auth()` / session checks
|
|
171
|
+
actually run server-side per protected operation.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Phase 3 — Session lifecycle [HIGH freedom]
|
|
176
|
+
|
|
177
|
+
**Cookies** — `HttpOnly`, `Secure`, `SameSite` (Lax min, Strict for
|
|
178
|
+
sensitive); scoped path/domain; not readable by JS. Token in
|
|
179
|
+
`localStorage` is XSS-exfiltratable — flag it; CSRF-vs-XSS must be a
|
|
180
|
+
deliberate choice.
|
|
181
|
+
|
|
182
|
+
**Logout that actually logs out** — a stateless JWT stays valid until
|
|
183
|
+
expiry if logout only clears the client. Confirm server-side
|
|
184
|
+
invalidation (Supabase `signOut` revokes the refresh token). Probe it
|
|
185
|
+
(Phase 5). Official sessions FAQ: access tokens can still be presented
|
|
186
|
+
after sign-out unless the app also checks revocation / uses
|
|
187
|
+
`getUser()`.
|
|
188
|
+
|
|
189
|
+
**Rotation & timeouts** — rotate on privilege change (login, role
|
|
190
|
+
elevation) to kill fixation; idle timeout and absolute-max lifetime
|
|
191
|
+
both present. Current norm: short access tokens, longer **rotated**
|
|
192
|
+
refresh tokens with reuse detection, capped absolute session.
|
|
193
|
+
|
|
194
|
+
**Refresh-token rotation + reuse detection** — official Supabase
|
|
195
|
+
sessions docs: a refresh token is single-use, with two exceptions
|
|
196
|
+
(default **10s reuse interval** — do not widen; parent-token retry for
|
|
197
|
+
lost responses). Outside those exceptions the **whole session family
|
|
198
|
+
is revoked**. Disabling that in Advanced Settings is "generally not
|
|
199
|
+
recommended" — flag if widened or disabled.
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Phase 4 — Credentials, OAuth, authorization [HIGH freedom]
|
|
204
|
+
|
|
205
|
+
**OAuth / OIDC** — `state` (CSRF on the callback), PKCE for public
|
|
206
|
+
clients, redirect-URI allowlist exact-match, provider `email_verified`
|
|
207
|
+
checked before trust, account-linking collisions handled.
|
|
208
|
+
|
|
209
|
+
**Credential flows** — reset tokens single-use + expiring + not leaked
|
|
210
|
+
in URL/referrer; **user enumeration** via differing error text or
|
|
211
|
+
timing on login/reset/signup; rate limiting on auth endpoints
|
|
212
|
+
specifically; MFA state cannot be skipped mid-flow.
|
|
213
|
+
|
|
214
|
+
**Authorization above the data layer** — not just "is logged in" but
|
|
215
|
+
"is allowed"; IDOR on API params (`/api/orders/:id` scoped to caller?);
|
|
216
|
+
admin routes gated by role server-side. Name which layer each control
|
|
217
|
+
lives in. `plan-rls-audit` owns the data-layer half.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Phase 5 — Live probes [LOW freedom — run each, in order, non-prod]
|
|
222
|
+
|
|
223
|
+
<!-- TECHNIQUE: T1 low-freedom exact steps for the fragile part. These are
|
|
224
|
+
not suggestions; each is a labeled probe whose result is evidence. The
|
|
225
|
+
reasoning chain's "needs-a-probe" items resolve here. -->
|
|
226
|
+
|
|
227
|
+
Force the failures rather than only reading code. Log each as
|
|
228
|
+
`P5-x | expected | actual | evidence`:
|
|
229
|
+
|
|
230
|
+
- **P5-a** Hit each protected route / API / action **unauthenticated** →
|
|
231
|
+
expect deny (not a redirect that still returns data).
|
|
232
|
+
- **P5-b** Replay a **logged-out** session token → expect reject.
|
|
233
|
+
- **P5-c** Tamper the session cookie / swap another user's identifier →
|
|
234
|
+
reject.
|
|
235
|
+
- **P5-d** IDOR: as user A, request user B's object by id → deny.
|
|
236
|
+
- **P5-e** If Next.js is version-vulnerable or self-hosted: send
|
|
237
|
+
`x-middleware-subrequest` and confirm WAF/edge *and* a route-handler
|
|
238
|
+
check still stop it.
|
|
239
|
+
- **P5-f** User-enumeration: compare wrong-password vs nonexistent-user
|
|
240
|
+
(text + timing).
|
|
241
|
+
|
|
242
|
+
Do not run these against production. Do not write exploit PoCs into
|
|
243
|
+
the repo.
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Self-critique before reporting [LOW freedom — do not skip]
|
|
248
|
+
|
|
249
|
+
<!-- TECHNIQUE: T4 evidence check before output. Opus 5.5 self-verifies
|
|
250
|
+
without being told, so this is not a "double-check your work" step — every
|
|
251
|
+
item names a specific piece of evidence (quote, probe, layer) a finding must
|
|
252
|
+
carry, and findings without it are dropped or downgraded. Add items that
|
|
253
|
+
name evidence; never generic "verify" lines. -->
|
|
254
|
+
|
|
255
|
+
Challenge every finding against this rubric; drop or downgrade any that fail:
|
|
256
|
+
|
|
257
|
+
1. **Evidenced, not assumed** — quoted line or probe result? If it rests on
|
|
258
|
+
"the code probably…", mark unconfirmed or run the probe.
|
|
259
|
+
2. **Reproducible** — did the probe succeed twice, or once? Flaky ≠ finding.
|
|
260
|
+
3. **Severity justified** — "critical" requires actual unauth access or
|
|
261
|
+
bypass, not theoretical risk.
|
|
262
|
+
4. **Right layer** — app-layer (yours) or data-layer (→ `plan-rls-audit`)?
|
|
263
|
+
5. **No false safety** — did you confirm a gate *works*, or only that it
|
|
264
|
+
*exists*? A check a probe bypassed is critical, not a pass.
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## Definition of Done
|
|
269
|
+
|
|
270
|
+
- [ ] Auth stack + framework version recorded
|
|
271
|
+
- [ ] Degree-of-freedom respected: Phase 5 probes and the getSession grep
|
|
272
|
+
run exactly, in order
|
|
273
|
+
- [ ] Route×gate matrix complete; every row reasoned
|
|
274
|
+
Observe→Interpret→Classify→Severity
|
|
275
|
+
- [ ] Matcher holes, layout-only, middleware-as-sole-gate, unprotected
|
|
276
|
+
server actions surfaced
|
|
277
|
+
- [ ] `getSession()`-for-authz grepped; `getUser()` confirmed on every
|
|
278
|
+
server gate
|
|
279
|
+
- [ ] CVE-2025-29927 (and later auth CVEs) checked against the pinned version
|
|
280
|
+
- [ ] Cookie flags, localStorage exposure, CSRF pairing assessed
|
|
281
|
+
- [ ] Server-side logout invalidation confirmed by probe; rotation +
|
|
282
|
+
idle/absolute timeouts present
|
|
283
|
+
- [ ] Refresh reuse interval not widened; family revocation not disabled
|
|
284
|
+
- [ ] OAuth state / PKCE / redirect-allowlist / email_verified checked
|
|
285
|
+
- [ ] User-enumeration, reset tokens, auth-endpoint rate limits, MFA-skip
|
|
286
|
+
checked
|
|
287
|
+
- [ ] App-layer authorization (roles, IDOR, admin) split from the RLS half
|
|
288
|
+
- [ ] Live probes run non-prod; each logged pass/fail
|
|
289
|
+
- [ ] Self-critique rubric applied; unevidenced/flaky findings dropped or
|
|
290
|
+
downgraded
|
|
291
|
+
- [ ] Read-only — findings presented, not patched
|
|
292
|
+
|
|
293
|
+
## Output format
|
|
294
|
+
|
|
295
|
+
1. **Route × gate matrix** — the table, gaps highlighted
|
|
296
|
+
2. **Findings** — issue | layer (edge/route/data) | severity (critical =
|
|
297
|
+
unauth access / auth bypass) | file:line or probe | fix shape — each
|
|
298
|
+
finding in the worked-example shape
|
|
299
|
+
3. **Provider-trap list** — exact call to change (`getSession` →
|
|
300
|
+
`getUser`, etc.)
|
|
301
|
+
4. **Probe log** — P5-x | expected | actual | evidence
|
|
302
|
+
5. **Fix plan** — auth-bypass and getSession-authz first, then session
|
|
303
|
+
lifecycle, then enumeration/OAuth. Handoffs: `plan-rls-audit`,
|
|
304
|
+
`plan-secrets-audit`, `plan-security-audit`, `backend-patterns`.
|
|
305
|
+
Present and stop.
|
|
306
|
+
|
|
307
|
+
<!-- TECHNIQUE: T5 terminology — this file uses finding (not issue/problem),
|
|
308
|
+
gate (not check/guard) for the auth layer, and probe for live evidence.
|
|
309
|
+
T6 conciseness — neighbor table kept (routing), official CVE/getSession/
|
|
310
|
+
getClaims/10s facts kept (not restated twice). Teaching comments live only
|
|
311
|
+
in this exemplar; strip them from the live SKILL.md. -->
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: enhance-web-conversion
|
|
3
|
+
description: >
|
|
4
|
+
Conversion pass for landing, pricing, and upgrade paths: positioned hero,
|
|
5
|
+
one CTA, real proof, anchored tiers, upgrade prompts at value moments. Use
|
|
6
|
+
when "pricing page", "improve conversion", or "paywall UX". Page build →
|
|
7
|
+
enhance-web-landing.
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# enhance-web-conversion — Message, offer, proof, prompt
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED.** Copy angle, packaging, and proof selection
|
|
14
|
+
`[HIGH freedom]`; the hero five-second check, the dark-pattern ban, and the
|
|
15
|
+
event names `[LOW freedom — run exactly]`.
|
|
16
|
+
|
|
17
|
+
Apply-now. `enhance-web-landing` makes the page look hand-crafted; this skill
|
|
18
|
+
makes it **say the right thing to the right person and ask once**. It touches
|
|
19
|
+
hero copy, CTA, pricing packaging, social proof, trust signals, and in-app
|
|
20
|
+
upgrade moments — and measures each with an event.
|
|
21
|
+
|
|
22
|
+
## This skill vs neighbors
|
|
23
|
+
|
|
24
|
+
| Skill | Owns |
|
|
25
|
+
|---|---|
|
|
26
|
+
| **enhance-web-conversion** (this) | What the page claims, offers, proves, and asks |
|
|
27
|
+
| `enhance-web-landing` | Layout, type, motion, visual system of the page |
|
|
28
|
+
| `enhance-onboarding` | Getting the free user to first value (before any ask) |
|
|
29
|
+
| `audit-payment-system` | Whether checkout, webhooks, and refunds actually work |
|
|
30
|
+
| `audit-monetization-iap` | Mobile store purchases |
|
|
31
|
+
| `plan-gtm` | Chose the model and the ICP this skill writes for |
|
|
32
|
+
| `plan-antislop` | Voice audit when the copy reads generated |
|
|
33
|
+
| `enhance-web-seo` | Titles, meta, schema for the same pages |
|
|
34
|
+
|
|
35
|
+
Do **not** fire for "make the pricing page prettier" alone → `enhance-web-landing`.
|
|
36
|
+
|
|
37
|
+
## How to reason
|
|
38
|
+
|
|
39
|
+
1. **Message** — does the hero state who it is for, what it does, why not the alternative — in five seconds?
|
|
40
|
+
2. **Offer** — does the packaging match the monetization model and make one tier the obvious pick?
|
|
41
|
+
3. **Proof** — is every claim backed by a named person, a number, or a screenshot?
|
|
42
|
+
4. **Prompt** — does the upgrade ask appear where value was just felt, and say what unlocks?
|
|
43
|
+
5. **Measure** — does each of the above fire an event so the change can be judged?
|
|
44
|
+
|
|
45
|
+
## Worked example
|
|
46
|
+
|
|
47
|
+
> **Message:** hero reads "145 skills · 57 commands"; the positioning says
|
|
48
|
+
> "refuses done while unchecked work remains". Rewrite: *"Coding agents call it
|
|
49
|
+
> done when it compiles. These playbooks don't."* CTA "Install in 30 seconds".
|
|
50
|
+
> **Offer:** free forever — so the only ask is the install; remove the second CTA.
|
|
51
|
+
> **Proof:** replace "used by developers" with the skills.sh install badge (live
|
|
52
|
+
> number) and one named quote from an issue thread.
|
|
53
|
+
> **Prompt:** none — no paid tier; add a "star if this saved you a rework" line
|
|
54
|
+
> after the first successful run (in-app, not on the landing page).
|
|
55
|
+
> **Measure:** `cta_clicked { location }`, `install_copied`; before/after
|
|
56
|
+
> visit→install unmeasured → measured.
|
|
57
|
+
|
|
58
|
+
## Self-critique before reporting
|
|
59
|
+
|
|
60
|
+
- **Five-second pass** — a stranger reading only the hero can say who/what/why-different
|
|
61
|
+
- **One primary CTA per screen** — its verb matches the model ("Start free" / "Start 14-day trial" / "Book a demo")
|
|
62
|
+
- **Every proof is real** — names, logos, numbers, and quotes exist in the repo or were supplied
|
|
63
|
+
- **No dark patterns** — cancel path visible; no fake timers, confirm-shaming, or pre-checked add-ons
|
|
64
|
+
- **Events added** — pricing and upgrade events listed with where they fire
|
|
65
|
+
- **Right owner** — visual system → `enhance-web-landing`; checkout bugs → `audit-payment-system`
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Procedure
|
|
70
|
+
|
|
71
|
+
### 1. Hero and CTA [LOW freedom — check; HIGH freedom — write]
|
|
72
|
+
|
|
73
|
+
Five-second check on the current hero: **who** (ICP named or implied), **what**
|
|
74
|
+
(outcome, not feature count), **why not the alternative**, **one CTA** above the
|
|
75
|
+
fold. Rewrite what fails. Sub-headline carries the mechanism; the H1 carries the
|
|
76
|
+
outcome. Model-matched CTA copy:
|
|
77
|
+
|
|
78
|
+
| Model | Primary CTA | Under it |
|
|
79
|
+
|---|---|---|
|
|
80
|
+
| Freemium / ungated | Start free · Try it now | "No account needed" / "Free forever for …" |
|
|
81
|
+
| Trial, no card | Start 14-day trial | "No credit card required" (lifts visit→signup) |
|
|
82
|
+
| Trial, card | Start trial | Price after trial + cancel-anytime, visible |
|
|
83
|
+
| Open-core / hosted | Deploy on cloud · Self-host | Link to the other path |
|
|
84
|
+
| Sales-assisted | Book a demo | Who it is for (team size / ACV) |
|
|
85
|
+
|
|
86
|
+
### 2. Pricing page [HIGH freedom]
|
|
87
|
+
|
|
88
|
+
- **≤3 self-serve tiers** good-better-best; the recommended middle tier is
|
|
89
|
+
visually and verbally the default; the higher tier sits on the right as the
|
|
90
|
+
anchor. An enterprise column shows "from $X" — hiding its price removes the
|
|
91
|
+
anchor and hurts middle-tier conversion.
|
|
92
|
+
- **Same CTA verb on every column**; "No credit card required" under the
|
|
93
|
+
button when true.
|
|
94
|
+
- **Annual toggle** — default monthly for self-serve products with a free
|
|
95
|
+
tier; state the saving as "2 months free", not "save 17%" (norm 15–25%).
|
|
96
|
+
- **Free tier limits explicit** — what runs out (seats, rows, runs), never vague "basic".
|
|
97
|
+
- **Usage / credits** — if the model meters, show the unit, the included
|
|
98
|
+
amount, and a live estimate; bill shock is the top objection.
|
|
99
|
+
- **Feature table** lists outcomes people search for; hide internals.
|
|
100
|
+
- **FAQ** answers cancel, refund, data export, security — the objections that stall checkout.
|
|
101
|
+
- A dual CTA (free plan **or** 14-day card trial) lifted premium trial starts
|
|
102
|
+
26% in one 2026 case; offer it only when `plan-gtm` chose both paths.
|
|
103
|
+
- Benchmarks to set expectations (2026, ChartMogul × Kyle Poyar × ProductLed):
|
|
104
|
+
freemium good 3–5%, trial no-card 4–6%, card-required 25–35%; median 8%.
|
|
105
|
+
Judge the change by Signup→Paid, not visits. Rows and URLs:
|
|
106
|
+
`plan-gtm/references/benchmarks-2026.md`.
|
|
107
|
+
|
|
108
|
+
### 3. Proof and trust [HIGH freedom]
|
|
109
|
+
|
|
110
|
+
Order of strength: live numbers (installs, stars, customers) → named quotes with
|
|
111
|
+
role → recognizable logos → screenshots of the real product → security/privacy
|
|
112
|
+
pages. Place the strongest one directly under the hero CTA and again beside the
|
|
113
|
+
pricing CTA. Fabricated or anonymous "Jane D., CEO" quotes are removed, not kept.
|
|
114
|
+
|
|
115
|
+
### 4. In-app upgrade prompts [HIGH freedom]
|
|
116
|
+
|
|
117
|
+
Ask at **value moments**: a limit reached, a premium feature touched, a result
|
|
118
|
+
worth keeping. The prompt names what unlocks, shows price, and completes in one
|
|
119
|
+
step. Dismiss is one click and remembered. Never interrupt the activation path
|
|
120
|
+
(`enhance-onboarding` owns that stretch). For a free tier, a "powered by"
|
|
121
|
+
badge on shared output is the cheapest loop (0.5–3% conversion, near-total
|
|
122
|
+
exposure); a referral credit follows once activation is measured.
|
|
123
|
+
|
|
124
|
+
### 5. Events [LOW freedom — names]
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
cta_clicked { location, label }
|
|
128
|
+
pricing_viewed · plan_selected { plan, interval }
|
|
129
|
+
checkout_started · checkout_completed { plan, interval }
|
|
130
|
+
upgrade_prompt_shown { trigger } · upgrade_prompt_clicked { trigger }
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Reconcile with `audit-analytics`; consent-gated; no PII.
|
|
134
|
+
|
|
135
|
+
### 6. Verify
|
|
136
|
+
|
|
137
|
+
- Five-second read of the new hero by someone outside the project (or a fresh model with only the screenshot): what is it, for whom, what outcome — then the doppelganger check with the logo removed (could this be a competitor's page?)
|
|
138
|
+
- Playwright: pricing → checkout start path; cancel/downgrade path still reachable
|
|
139
|
+
- Events observed in the debug view
|
|
140
|
+
- Report: before/after copy, packaging diff, proof sources, events, files
|
|
141
|
+
|
|
142
|
+
## Guardrails
|
|
143
|
+
|
|
144
|
+
- **No dark patterns** — no fake countdowns or scarcity, hidden cancel, confirm-shaming, pre-checked upsells, or bait pricing.
|
|
145
|
+
- **Claims need evidence** — a number or a name; otherwise cut the claim.
|
|
146
|
+
- **Model is not yours to change** — packaging follows the `plan-gtm` decision.
|
|
147
|
+
- **Voice** — if it reads like every other SaaS page, hand the copy to `plan-antislop`.
|
|
148
|
+
|
|
149
|
+
## Chains with
|
|
150
|
+
|
|
151
|
+
- **`plan-gtm`** → positioning statement and monetization verdict this skill implements.
|
|
152
|
+
- **`enhance-web-landing`** → visual pass on the same pages.
|
|
153
|
+
- **`enhance-web-seo`** → title/meta/schema for landing and pricing.
|
|
154
|
+
- **`audit-payment-system`** → before turning on a card-required trial.
|
|
155
|
+
- **`test-playwright`** → lock checkout and cancel paths.
|