@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,183 @@
|
|
|
1
|
+
# GTM benchmarks and sources (verified 2026-09-17)
|
|
2
|
+
|
|
3
|
+
Shared by `plan-gtm`, `plan-pricing`, `enhance-onboarding`,
|
|
4
|
+
`enhance-web-conversion`, `enhance-lifecycle-email`, `enhance-growth-loops`,
|
|
5
|
+
`docs-launch-kit`, `docs-comparison-pages`, `audit-registry-listing`,
|
|
6
|
+
`iterate-gtm-weekly`. Quote a number only with its row here; if a row is
|
|
7
|
+
missing, write **unmeasured** or **no benchmark** in the plan.
|
|
8
|
+
|
|
9
|
+
## Free-to-paid by model
|
|
10
|
+
|
|
11
|
+
ChartMogul × Growth Unhinged (Kyle Poyar) × ProductLed, ~200 self-serve
|
|
12
|
+
products, Jan 2026. Conversion measured within 6 months of signup.
|
|
13
|
+
|
|
14
|
+
| Model | Good (p50) | Great (p75) | Notes |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| Freemium (gated) | 3–5% | 8–12% | 26% of products lead with it |
|
|
17
|
+
| Freemium, ungated (try before account) | 7–9% | 8–12% | 7% of products; adoption play |
|
|
18
|
+
| Free trial, no card | 4–6% | 10–15% | 57% of products; 14-day modal (62%) |
|
|
19
|
+
| Free trial, card required | 25–35% | 50–60% | 20% of trials; ~5× no-card; ~65% fewer signups |
|
|
20
|
+
| Reverse trial | 4–6% | 8–12% | 7% of products; **not statistically distinct** |
|
|
21
|
+
| Interactive demo (dummy data) | — | — | 7% of products |
|
|
22
|
+
|
|
23
|
+
Median across all models **8%**; 20% of trial products convert under 2.5%,
|
|
24
|
+
23% above 25%. Per 1,000 visitors: freemium ≈ 90 signups → 5 paid; no-card
|
|
25
|
+
trial 45 → 4; card trial 35 → 11. One dual-CTA change (free plan *or*
|
|
26
|
+
14-day card trial) lifted premium trial starts 26%. PQL-driven conversion
|
|
27
|
+
runs ~3× the 9% average; only 24–34% of PLG companies track PQLs/activation.
|
|
28
|
+
|
|
29
|
+
- https://www.growthunhinged.com/p/free-to-paid-conversion-report
|
|
30
|
+
- https://chartmogul.com/reports/saas-conversion-report/
|
|
31
|
+
- https://www.growthunhinged.com/p/how-to-improve-free-to-paid-conversion
|
|
32
|
+
- https://productled.com/blog/product-led-growth-benchmarks
|
|
33
|
+
- https://userpilot.com/blog/saas-average-conversion-rate/ (First Page Sage and
|
|
34
|
+
GrowthSpree report higher B2B bands: opt-in 14–18%, opt-out 44–49%)
|
|
35
|
+
|
|
36
|
+
## Activation, time-to-value, retention
|
|
37
|
+
|
|
38
|
+
| Metric | Number | Source |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| B2B SaaS activation, average / median | 37.5% / 37% (n=62) | Userpilot 2025 |
|
|
41
|
+
| PLG vs sales-led activation | 34.6% vs 41.6% | Userpilot 2025 |
|
|
42
|
+
| Activation by vertical | AI/ML 54.8% · dev tools ~40% · MarTech 24% · FinTech 5% | Userpilot 2025 |
|
|
43
|
+
| Activation median, all products / SaaS | 25% / 30%; good = p60, great = p80 | Lenny × Timen, 500+ products |
|
|
44
|
+
| Time-to-value, average / median | 1 d 12 h / 1 d 2 h; top quartile < 5 min | Userpilot 2025 |
|
|
45
|
+
| TTV > 24 h | activation collapses below 25% | Userpilot analysis |
|
|
46
|
+
| Day-1 activation, top products / median | 21% / 5% | Amplitude 2025 (2,600+ cos) |
|
|
47
|
+
| Day-7 return of a new cohort | ≥ 7% = top quartile | Amplitude 2025 |
|
|
48
|
+
| Month-3 loss of new users, median product | 96% | Amplitude 2025 |
|
|
49
|
+
| Valid activation event | ≥ 2× retention for users who hit it | Lenny × Timen |
|
|
50
|
+
| Onboarding checklist completion | 19–20% avg; engaged users finish ~5 items | Chameleon 2025 (550M interactions) |
|
|
51
|
+
| Tour completion | click-triggered 67% vs timer 31%; 3–4 steps 72–74%, 7+ steps 16% | Chameleon 2025 |
|
|
52
|
+
| Embedded guidance vs modal | +20% engagement | Chameleon 2025 |
|
|
53
|
+
| Personalization | 65% collect signup data, 18% use it | Chameleon 2025 |
|
|
54
|
+
|
|
55
|
+
- https://userpilot.com/saas-product-metrics/
|
|
56
|
+
- https://www.lennysnewsletter.com/p/what-is-a-good-activation-rate
|
|
57
|
+
- https://www.linkedin.com/posts/elenaverna_growth-data-activity-7377023750262644736-buVc
|
|
58
|
+
- https://www.chameleon.io/benchmark-report
|
|
59
|
+
- https://www.reforge.com/guides/analyze-activation (Setup → Aha → Habit)
|
|
60
|
+
- https://posthog.com/product-engineers/activation-metrics (pick the event combo that best predicts 3-month retention)
|
|
61
|
+
|
|
62
|
+
## Pricing and packaging
|
|
63
|
+
|
|
64
|
+
- Hybrid (seat + usage) pricing 27% → 41% of B2B SaaS in 2025; seat-only
|
|
65
|
+
21% → 15%; 29% sell AI credits, 33% plan to. AI-native companies 4× more
|
|
66
|
+
likely to price on outcomes. — https://www.growthunhinged.com/p/2025-state-of-b2b-monetization
|
|
67
|
+
- Annual discount norm 15–25%; state it as "2 months free", not "save 17%".
|
|
68
|
+
Hiding the enterprise price removes the anchor and hurts middle-tier
|
|
69
|
+
conversion — show "from $X". — https://productphilosophy.com/articles/pricing-page-conversion-architecture-twelve-elements
|
|
70
|
+
- Three tiers good-better-best, recommended middle, higher tier on the right
|
|
71
|
+
as anchor, same CTA verb on every column, "No credit card required" under
|
|
72
|
+
the button when true. — https://kompassify.com/blog/pricing-page-best-practices
|
|
73
|
+
- Underpricing attracts the curious, not the committed: one indie raise
|
|
74
|
+
£9 → £19 moved month-3 retention 42% → 67%. — https://www.indiehackers.com/post/i-underpriced-my-saas-for-4-months-and-it-almost-broke-me-not-the-way-you-think-a0ae21a1e6
|
|
75
|
+
|
|
76
|
+
## Pricing research and value metric
|
|
77
|
+
|
|
78
|
+
- Order of methods: Van Westendorp (acceptable range; directional) →
|
|
79
|
+
Gabor-Granger (revenue-maximizing point on one tier) → MaxDiff (rank
|
|
80
|
+
features for tier placement) → conjoint (price bundles). —
|
|
81
|
+
https://thesaaslibrary.com/pricing-research-methods-saas-founders/
|
|
82
|
+
- Value metric = the unit the price attaches to; "subscription vs usage" is
|
|
83
|
+
a payment cadence question, not the metric. A good metric is understandable
|
|
84
|
+
by the buyer, estimable before signing, and diverges from cost. 41% of
|
|
85
|
+
software buyers cite unpredictable cost as the primary objection to
|
|
86
|
+
usage pricing (2025 survey). — https://softwarepricing.com/blog/value-metric-decision/
|
|
87
|
+
- Score candidates on value connection, fairness/familiarity, predictability,
|
|
88
|
+
scalability, billability; simulate on historical accounts. —
|
|
89
|
+
https://www.pacepricing.com/blog/the-ultimate-guide-to-value-metrics-for-b2b-saas-pricing-monetization ·
|
|
90
|
+
https://enablism.com/resources/value-metrics-for-b2b-pricing/ ·
|
|
91
|
+
https://www.getmonetizely.com/articles/how-to-choose-the-right-saas-pricing-metric-with-value-metric-examples
|
|
92
|
+
|
|
93
|
+
## Lifecycle email
|
|
94
|
+
|
|
95
|
+
- Behavior-triggered sequences vs calendar drips: vendor-reported ~3–4× the
|
|
96
|
+
click-through and up to ~30% higher conversion (Userpilot, Customer.io,
|
|
97
|
+
Bessemer citations); no independent primary study — treat as direction. —
|
|
98
|
+
https://www.digitalapplied.com/blog/saas-customer-onboarding-email-sequence-2026-crm-playbook ·
|
|
99
|
+
https://ustechautomations.com/resources/blog/automate-saas-free-trial-onboarding-activation-2026
|
|
100
|
+
- Timers are the fallback for users with no signal; exit the sequence the
|
|
101
|
+
moment the goal event fires; split expiry messaging by activated vs
|
|
102
|
+
stalled. — https://www.getfluxly.com/blog/lifecycle-email-automation-saas
|
|
103
|
+
- 70–85% of trial-to-paid conversions happen in the second half of the
|
|
104
|
+
trial; sequences that stop on day 7 of 14 under-perform. Cadence:
|
|
105
|
+
activation push days 1–3, value reinforcement 4–10, conversion CTA 11–14. —
|
|
106
|
+
https://www.growthspreeofficial.com/blogs/b2b-saas-trial-to-paid-conversion-rate-benchmarks-2026-by-trial-type-acv-length-credit-card
|
|
107
|
+
- Users without the core activation action inside 48 h carry the highest
|
|
108
|
+
churn probability — the day-2 nudge is the highest-leverage single email. —
|
|
109
|
+
https://ustechautomations.com/resources/blog/automate-saas-free-trial-onboarding-activation-2026
|
|
110
|
+
|
|
111
|
+
## Open-source monetization
|
|
112
|
+
|
|
113
|
+
- Managed cloud carries 48–73% of revenue at MongoDB, Confluent, Elastic; the
|
|
114
|
+
cloud line grows faster than the company. GitLab open-core: 23% growth,
|
|
115
|
+
117% NRR (Q1 FY27). Open-core self-host → paid conversion ~0.5–2%.
|
|
116
|
+
- Relicensing (Elastic, Redis) cost contributors to permanent forks and
|
|
117
|
+
gained no visible revenue; both reversed. A license is a distribution
|
|
118
|
+
decision; monetization is who runs the software.
|
|
119
|
+
- AGPL + commercial dual license is the proven open-core shape; some buyers
|
|
120
|
+
(Google) ban AGPL outright. BSL / FSL are source-available, not OSI.
|
|
121
|
+
- https://www.saasmag.com/open-source-saas-monetization-license-product/
|
|
122
|
+
- https://ossalt.com/guides/open-core-vs-source-available-business-models-2026
|
|
123
|
+
- https://finitestate.io/blog/the-complete-guide-to-open-source-licenses
|
|
124
|
+
- https://fsl.software/
|
|
125
|
+
|
|
126
|
+
## Distribution
|
|
127
|
+
|
|
128
|
+
| Channel | Number | Source |
|
|
129
|
+
|---|---|---|
|
|
130
|
+
| Show HN front page (dev tool) | 5–30k visits, 50–400 signups, < 5% conv; #1 ≈ 300k daily uniques | Causo Hub 2026 |
|
|
131
|
+
| Show HN clearing 10 points | 62% (2022) → 11% (2025) | DoDataThings analysis |
|
|
132
|
+
| Show HN timing | 12–17 UTC, Tue–Thu; ~+200 GitHub stars vs off-peak | DoDataThings analysis |
|
|
133
|
+
| Product Hunt featured rate | 60–98% (2020–23) → ~10% | awesome-directories 2025; PH newsletter |
|
|
134
|
+
| Product Hunt B2B visit→signup | 1–2% | Causo Hub 2026 |
|
|
135
|
+
| Comparison pages in a pSEO test | 28% of pages → 78% of clicks, 6 of 7 leads | nicodigital, 162 pages |
|
|
136
|
+
| llms.txt | Google: zero effect on Search / AI Overviews (2026-06-15); AI crawlers rarely fetch it; coding assistants do read it on docs sites | digitalapplied 2026 |
|
|
137
|
+
| AI citations | third-party publishers earn 6.5× more citations than owned domains | geoaura 2026 |
|
|
138
|
+
| SaaS referral rate / referred conversion | 4.75% avg / 7.86%, top quartile 12%+ | bloop.plus |
|
|
139
|
+
| "Powered by" badge | 0.5–3% conversion, ~100% exposure; value-before-signup lifts referred conversion 2–5× | nativeviralloop |
|
|
140
|
+
| Warm invites (user-sent, named recipient) | 10–25% accept → signup | nativeviralloop |
|
|
141
|
+
|
|
142
|
+
- https://hub.causo.ai/guides/show-hn-launch-playbook-technical-founders-2026
|
|
143
|
+
- https://hub.causo.ai/guides/product-hunt-vs-hacker-news-vs-betalist-2026
|
|
144
|
+
- https://dodatathings.dev/blog/launch-platform-roi-the-math-nobody-shares
|
|
145
|
+
- https://news.ycombinator.com/showhn.html (rules: runnable thing, no signup wall, no vote solicitation)
|
|
146
|
+
- https://awesome-directories.com/blog/product-hunt-launch-guide-2025-algorithm-changes/
|
|
147
|
+
- https://www.producthunt.com/newsletters/archive/33951-the-roundup-is-product-hunt-dead
|
|
148
|
+
- https://www.nicodigital.com/technical-seo/programmatic-seo-experiment-162-pages/
|
|
149
|
+
- https://developers.google.com/search/docs/essentials/spam-policies (scaled content abuse covers AI-generated pages)
|
|
150
|
+
- https://www.digitalapplied.com/blog/google-llms-txt-no-seo-value-lighthouse-audit-2026
|
|
151
|
+
- https://nativeviralloop.com/knowledge/viral-loop-metrics.html
|
|
152
|
+
- https://www.reforge.com/blog/growth-loops
|
|
153
|
+
|
|
154
|
+
## Positioning and messaging
|
|
155
|
+
|
|
156
|
+
- Dunford order: competitive alternatives (incl. spreadsheets / do nothing)
|
|
157
|
+
→ unique attributes → value themes with proof → who cares most → market
|
|
158
|
+
category → optional trend. — https://www.aprildunford.com/post/a-quickstart-guide-to-positioning
|
|
159
|
+
- Five-second test with ICP respondents: what is it, for whom, what outcome;
|
|
160
|
+
"doppelganger" check with the logo removed. — https://www.electriccopy.tech/blog/how-to-test-messaging-on-a-budget
|
|
161
|
+
- North-star: classify the game (attention / transaction / productivity),
|
|
162
|
+
define the value moment as a time-bound behavior, confirm it leads revenue
|
|
163
|
+
and retention, pick 3–5 inputs with owners. — https://amplitude.com/blog/product-north-star-metric
|
|
164
|
+
- PQA (account fit + usage) says *when*; PQL (economic buyer present) says
|
|
165
|
+
*whom*. — https://www.elenaverna.com/p/elenas-2024-b2b-product-led-sales
|
|
166
|
+
|
|
167
|
+
## Failure modes (why GTM plans die)
|
|
168
|
+
|
|
169
|
+
CB Insights, 431 VC-backed shutdowns since 2023: 43% poor product-market fit,
|
|
170
|
+
29% timing, 19% unit economics; 18% pricing, 14% marketing.
|
|
171
|
+
|
|
172
|
+
1. Building before validating — no ICP interviews.
|
|
173
|
+
2. Generic hero — fails the five-second test; written for investors.
|
|
174
|
+
3. Underpricing "to reduce friction".
|
|
175
|
+
4. No distribution hypothesis — "first-time founders focus on product, second-time on distribution".
|
|
176
|
+
5. Activation untracked (~66%) or defined as payment.
|
|
177
|
+
6. AI-generated content at scale — Google spam policy; HN removes AI-written posts.
|
|
178
|
+
7. Launching once instead of per release.
|
|
179
|
+
8. Reverse trial or AI credits as a fix — neither shows a conversion lift.
|
|
180
|
+
|
|
181
|
+
- https://www.cbinsights.com/research/report/startup-failure-reasons-top/
|
|
182
|
+
- https://github.com/dovzhikova/developer-tools-gtm-checklist
|
|
183
|
+
- https://gtm-labs.co/open-source-go-to-market (README first 10 lines = hero)
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-input-validation
|
|
3
|
+
description: >
|
|
4
|
+
Plan-only trust-boundary audit for missing validation, injection, XSS, and
|
|
5
|
+
forged requests across forms, APIs, and webhooks. Use when "validate my
|
|
6
|
+
inputs", "is my app injection-safe?", "check my forms", or "can someone
|
|
7
|
+
forge requests?".
|
|
8
|
+
license: MIT
|
|
9
|
+
effort: high
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Input-Validation & Trust-Boundary Audit + Hardening Plan
|
|
13
|
+
|
|
14
|
+
**Degree of freedom: HIGH** — map trust boundaries, score gaps, emit a plan.
|
|
15
|
+
Stay **plan-only**. No Zod, sanitizers, or webhook edits until approved.
|
|
16
|
+
|
|
17
|
+
## This skill vs neighbors
|
|
18
|
+
|
|
19
|
+
| Skill | Owns |
|
|
20
|
+
|---|---|
|
|
21
|
+
| **plan-input-validation** (this) | Trust-boundary / injection plan |
|
|
22
|
+
| `enhance-web-forms` | Apply production form quality |
|
|
23
|
+
| `plan-security-audit` | OWASP umbrella burndown |
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
**Role:** Senior application security engineer (trust-boundary lens).
|
|
27
|
+
|
|
28
|
+
**Task:** Map every point untrusted data enters, score validate/sanitize/authenticate
|
|
29
|
+
gaps, phase remediations, emit `plan-input-validation.md`. **Audit & plan only — no
|
|
30
|
+
code changes until each phase is approved.**
|
|
31
|
+
|
|
32
|
+
**Walk every boundary. Find what's trusted that shouldn't be. Change nothing until approved.**
|
|
33
|
+
|
|
34
|
+
## How to reason (every plan item)
|
|
35
|
+
|
|
36
|
+
1. **Propose** — schema, sanitize, signature verify, or allowlist
|
|
37
|
+
2. **Risk** — forgeable money/data, stored XSS, or injection
|
|
38
|
+
3. **Keep-working** — boundaries that already validate + authenticate
|
|
39
|
+
4. **Phase** — Forgeable paths → XSS → Schema pass → Uploads (do not execute)
|
|
40
|
+
|
|
41
|
+
## Worked example
|
|
42
|
+
|
|
43
|
+
> **Propose:** verify the Stripe webhook with `constructEvent` on the raw body; reject empty secrets; return 400 on bad signatures.
|
|
44
|
+
> **Risk:** empty-signing-secret bypass — anyone can forge `invoice.paid` and credit quota.
|
|
45
|
+
> **Keep-working:** checkout session creation already uses the server-side secret.
|
|
46
|
+
> **Phase:** Phase 1 — Forgeable money/data paths.
|
|
47
|
+
> **Note:** origin proof ≠ safe to interpolate into SQL/HTML.
|
|
48
|
+
|
|
49
|
+
AI agents write code that works on the inputs you showed them. Two signature patterns
|
|
50
|
+
recur: `dangerouslySetInnerHTML` without DOMPurify (XSS), and webhook handlers without
|
|
51
|
+
real signature verification — the reported empty-signing-secret bypass class, where an
|
|
52
|
+
empty secret lets any attacker forge valid signatures and credit unlimited quota
|
|
53
|
+
without payment.
|
|
54
|
+
|
|
55
|
+
This skill is the **audit-and-plan** half. Execution goes to `backend-patterns` /
|
|
56
|
+
`backend-error-handling` / `audit-security` after you approve each phase.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## When this fires
|
|
61
|
+
|
|
62
|
+
Trigger phrases: *"validate my inputs"*, *"is this injection-safe"*, *"check my
|
|
63
|
+
forms / API"*, *"XSS"*, *"dangerouslySetInnerHTML"*, *"my Stripe webhook"*, *"can
|
|
64
|
+
requests be forged"*, *"sanitize user content"*, *"pre-launch input hardening"*.
|
|
65
|
+
|
|
66
|
+
Do **not** fire for: row-level access (`plan-rls-audit`), credential exposure
|
|
67
|
+
(`plan-secrets-audit`), or broad architecture review (`plan-security-audit`).
|
|
68
|
+
This skill owns the *boundary where untrusted data enters*.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## The four boundary classes [HIGH freedom]
|
|
73
|
+
|
|
74
|
+
### 1 · Form & API input
|
|
75
|
+
- **No schema validation** — bodies/params/query without Zod (or equivalent).
|
|
76
|
+
- **Type-coerced trust** — `Number(req.body.amount)` with no bounds.
|
|
77
|
+
- **Missing field-level checks** — email format, length caps, enum membership.
|
|
78
|
+
- **Mass assignment** — spreading `req.body` into DB insert/update (`role`,
|
|
79
|
+
`is_admin`, `credits`).
|
|
80
|
+
- **SQL/RPC injection** — string-interpolated queries or raw user input into SQL.
|
|
81
|
+
|
|
82
|
+
### 2 · Rendered untrusted content (XSS)
|
|
83
|
+
- **`dangerouslySetInnerHTML` / `v-html` / `innerHTML`** without DOMPurify.
|
|
84
|
+
- **URL/attribute injection** — `javascript:` URIs, unvalidated redirects.
|
|
85
|
+
- **Stored XSS** — content saved now, rendered raw later.
|
|
86
|
+
|
|
87
|
+
### 3 · Webhooks & forged requests *(Stripe-aware)*
|
|
88
|
+
- **Signature not verified** — or verified against **empty secret**
|
|
89
|
+
(empty-secret bypass class).
|
|
90
|
+
- **Raw-body mistake** — `JSON.stringify(req.body)` instead of raw bytes.
|
|
91
|
+
- **No idempotency** — Stripe at-least-once retries double-process.
|
|
92
|
+
- **Cross-gateway trust** — fulfilling without checking callback source.
|
|
93
|
+
- **Missing timestamp tolerance** — replay window open.
|
|
94
|
+
- **Returns 500 not 400** on bad signature → infinite Stripe retries.
|
|
95
|
+
|
|
96
|
+
### 4 · File uploads & other boundaries
|
|
97
|
+
- **No type/size/MIME validation**; trusting client content-type.
|
|
98
|
+
- **Path traversal** in filenames; **SSRF** in user-supplied URLs.
|
|
99
|
+
- **Concurrency** — read-modify-write races without DB constraints.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Procedure [HIGH freedom — plan only]
|
|
104
|
+
|
|
105
|
+
1. **Map boundaries.** Enumerate every untrusted entry point. Skip absent ones.
|
|
106
|
+
2. **Test each.** For every boundary: validated? sanitized? authenticated?
|
|
107
|
+
3. **Score.** Severity = reachability × impact.
|
|
108
|
+
4. **Phase** into shippable groups mapped to execution skills.
|
|
109
|
+
5. **Emit `plan-input-validation.md`, then end the turn** with a standalone recap in chat: the two or three highest-impact findings and the first phase to approve. The file is the deliverable — write it before the recap. **Do not edit code.**
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Guardrails
|
|
114
|
+
|
|
115
|
+
- **Plan only.** No Zod schemas, sanitizers, or webhook config changes.
|
|
116
|
+
- **Validate at the boundary, not after.**
|
|
117
|
+
- **Signature ≠ safety.** Origin proof ≠ safe to interpolate into SQL/HTML.
|
|
118
|
+
- **Don't trust the client copy.** Browser-only checks are UX, not security.
|
|
119
|
+
- **Stack-specific raw-body note.** Call out Next.js + Stripe raw-body requirement.
|
|
120
|
+
- **Minimal quoting** of source.
|
|
121
|
+
|
|
122
|
+
## Self-critique before the burndown [LOW freedom — do not skip]
|
|
123
|
+
|
|
124
|
+
1. **evidenced-not-assumed** — every boundary cites path:line; skip classes that do not exist
|
|
125
|
+
2. **plan-only** — no Zod schemas, DOMPurify, or webhook config
|
|
126
|
+
3. **severity/phase justified** — unauthenticated write / forgeable money is Critical
|
|
127
|
+
4. **right-owner** — RLS row access → `plan-rls-audit`; leaked keys → `plan-secrets-audit`; OWASP umbrella → `plan-security-audit`
|
|
128
|
+
5. **no-false-safety** — browser-only checks are UX; signature ≠ sanitization; empty webhook secret is a bypass
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Report template — `plan-input-validation.md`
|
|
133
|
+
|
|
134
|
+
```markdown
|
|
135
|
+
# Input-Validation & Trust-Boundary Audit — <repo>
|
|
136
|
+
|
|
137
|
+
_Audit-only. Nothing changes until each phase is approved._
|
|
138
|
+
|
|
139
|
+
## Scope
|
|
140
|
+
- Boundaries found: forms / API / webhooks / uploads / rendered content
|
|
141
|
+
- Stack: Supabase ☐ Stripe ☐ Next.js ☐ | Assumptions: …
|
|
142
|
+
|
|
143
|
+
## Verdict
|
|
144
|
+
| Boundary class | Findings | Critical | Unauthenticated write reachable? |
|
|
145
|
+
|----------------|----------|----------|----------------------------------|
|
|
146
|
+
| Form & API | n | n | … |
|
|
147
|
+
| Rendered (XSS) | n | n | … |
|
|
148
|
+
| Webhooks | n | n | … |
|
|
149
|
+
| Uploads/other | n | n | … |
|
|
150
|
+
|
|
151
|
+
## Findings
|
|
152
|
+
| # | Boundary | path:line | Missing: validate/sanitize/authenticate | Sev | Direction |
|
|
153
|
+
|---|----------|-----------|-----------------------------------------|-----|-----------|
|
|
154
|
+
| I1 | Stripe webhook | api/webhooks/stripe.ts:12 | authenticate (no constructEvent) | Crit | verify raw body against secret; 400 on fail |
|
|
155
|
+
| I2 | comment render | Comment.tsx:30 | sanitize (dangerouslySetInnerHTML) | High | DOMPurify before render |
|
|
156
|
+
| I3 | profile update | actions/profile.ts:8 | validate (mass assignment) | High | Zod allowlist; drop role/credits |
|
|
157
|
+
|
|
158
|
+
## Phased burndown
|
|
159
|
+
- **Phase 1 — Forgeable money/data paths** → `backend-patterns` — webhooks, mass-assign
|
|
160
|
+
- **Phase 2 — XSS / rendered content** → `backend-error-handling` / `enhance-web-ux` — I2…
|
|
161
|
+
- **Phase 3 — Schema validation pass** → `backend-patterns` — Zod at every boundary
|
|
162
|
+
- **Phase 4 — Uploads & concurrency** → `audit-security` — files, races
|
|
163
|
+
|
|
164
|
+
## Execution handoff
|
|
165
|
+
Approve a phase to run it. Re-run after; for webhooks, verify with Stripe CLI
|
|
166
|
+
fixtures (real signed events) not mocked payloads.
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Chains with
|
|
172
|
+
|
|
173
|
+
- **Security spine** — entry layer (**this skill**); data access: `plan-rls-audit`;
|
|
174
|
+
credentials: `plan-secrets-audit`.
|
|
175
|
+
- **Execution:** `backend-patterns`, `backend-error-handling`, `audit-security`,
|
|
176
|
+
`audit-fe-api`.
|
|
177
|
+
- **Verify:** `test-red-team` + Stripe CLI signed webhook fixtures.
|
|
178
|
+
|
|
179
|
+
> Planned at high effort; executed at the default effort under the approved-plan execution rule (`approved-plan-execution.mdc`), which forbids reward hacking and feature deletion on any model. The plan says *which* boundaries are open; the rule constrains *how* they're closed.
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-llm-cost-guardrails
|
|
3
|
+
description: >
|
|
4
|
+
Plan-only audit of an LLM app's runaway-cost and quota-abuse exposure. Use
|
|
5
|
+
when "cap my AI costs", "my LLM bill could blow up", "rate limit my AI",
|
|
6
|
+
"token budget", "runaway agent loop", or hardening LLM features before
|
|
7
|
+
launch.
|
|
8
|
+
license: MIT
|
|
9
|
+
effort: high
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# LLM Cost-Guardrail Audit + Remediation Plan
|
|
13
|
+
|
|
14
|
+
**Degree of freedom: HIGH** — inventory call sites, score unbounded
|
|
15
|
+
paths, plan. Stay **plan-only**. No limits or routing changes until approved.
|
|
16
|
+
|
|
17
|
+
## This skill vs neighbors
|
|
18
|
+
|
|
19
|
+
| Skill | Owns |
|
|
20
|
+
|---|---|
|
|
21
|
+
| **plan-llm-cost-guardrails** (this) | Token / quota / runaway-loop plan |
|
|
22
|
+
| `audit-langfuse-llm` | Quality and cost traces |
|
|
23
|
+
| `audit-infra-cost` | Hosting / egress bill |
|
|
24
|
+
| `audit-llm-security` | Unbounded consumption as an attack |
|
|
25
|
+
|
|
26
|
+
## How to reason (every plan item)
|
|
27
|
+
|
|
28
|
+
1. **Propose** — token cap, kill switch, breaker, or fallback
|
|
29
|
+
2. **Risk** — worst-case spend × who can reach the path
|
|
30
|
+
3. **Keep-working** — call sites that already bound tokens and account usage
|
|
31
|
+
4. **Phase** — caps → breakers → fallback → visibility (do not execute)
|
|
32
|
+
|
|
33
|
+
## Worked example
|
|
34
|
+
|
|
35
|
+
> **Propose:** per-user daily token cap + hard daily-spend kill switch on `lib/ai.ts`.
|
|
36
|
+
> **Risk:** public `/api/chat` can replay a 50K context until the bill dies; RPM-only does not count.
|
|
37
|
+
> **Keep-working:** summarizer path already sets `max_tokens`.
|
|
38
|
+
> **Phase:** Phase 1 — caps & kill switch.
|
|
39
|
+
|
|
40
|
+
**Role:** Senior platform engineer (LLM spend + abuse resistance).
|
|
41
|
+
|
|
42
|
+
**Task:** Inventory every LLM call site, test against the 3-layer guardrail model,
|
|
43
|
+
score unbounded paths, phase remediations, emit `plan-llm-cost-guardrails.md`.
|
|
44
|
+
**Audit & plan only — no limits or routing changes until approved.**
|
|
45
|
+
|
|
46
|
+
**Find every path to a runaway bill. Cap it. Change nothing until approved.**
|
|
47
|
+
|
|
48
|
+
Token cost scales with **input + output tokens**, not request count — a single
|
|
49
|
+
50K-token context replayed three times can exhaust a budget while staying under any
|
|
50
|
+
RPM cap. Vibe-coded AI features ship with no spend cap, no per-user quota, no
|
|
51
|
+
output-token cap, no circuit breaker — compounded by prompt-injection cost amplification
|
|
52
|
+
and forged-webhook quota fraud (the empty-signing-secret bypass class).
|
|
53
|
+
|
|
54
|
+
This is the *prevention* counterpart to Langfuse observability: Langfuse tells you
|
|
55
|
+
what spend *happened*; this audits what's *capped*.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## When this fires
|
|
60
|
+
|
|
61
|
+
Trigger phrases: *"cap my AI costs"*, *"my LLM bill could explode"*, *"rate limit
|
|
62
|
+
my AI"*, *"token budget"*, *"someone could drain my quota"*, *"runaway agent
|
|
63
|
+
loop"*, *"per-user AI limits"*, *"pre-launch cost hardening"*.
|
|
64
|
+
|
|
65
|
+
Do **not** fire for: output quality/evals (`audit-langfuse-llm`), generic API
|
|
66
|
+
performance, or trace visibility (`plan-error-handling`). This owns *bounded spend*.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## The audit — 3-layer guardrail model [HIGH freedom]
|
|
71
|
+
|
|
72
|
+
### Layer 1 · Limits (token-aware, not request-count)
|
|
73
|
+
- **Token-bucket / quota per (user, model)** — any per-identity limit?
|
|
74
|
+
- **Token-based, not just RPM** — prompt-TPM and output-TPM ceilings.
|
|
75
|
+
- **Output-token / context caps** — `max_tokens` (Anthropic),
|
|
76
|
+
`max_completion_tokens` or `max_output_tokens` (OpenAI); bound worst-case
|
|
77
|
+
cost; truncate RAG context.
|
|
78
|
+
- **Short + long windows** — per-minute burst *and* per-day/month budget.
|
|
79
|
+
- **Tiered limits** — free vs paid wired to Stripe entitlement.
|
|
80
|
+
|
|
81
|
+
### Layer 2 · Circuit breakers
|
|
82
|
+
- **Cost-velocity breaker** — spend/min threshold.
|
|
83
|
+
- **Loop / repeat detection** — retry-storms, growing-context loops.
|
|
84
|
+
- **Daily-spend kill switch** — hard cap backstop.
|
|
85
|
+
- **Error-rate breaker** — mostly-failing caller identity.
|
|
86
|
+
|
|
87
|
+
### Layer 3 · Fallback chain
|
|
88
|
+
- **Primary → cheaper model → cache → graceful 503.**
|
|
89
|
+
- **Semantic cache** before paid calls.
|
|
90
|
+
- **Model routing by complexity** — flag patterns that send every call to the most
|
|
91
|
+
expensive model tier.
|
|
92
|
+
|
|
93
|
+
### Cross-cutting
|
|
94
|
+
- **Streaming usage accounting** — read usage from the stream or spend is
|
|
95
|
+
invisible: OpenAI Chat Completions sends it only with
|
|
96
|
+
`stream_options.include_usage`; Anthropic sends it in `message_start` and
|
|
97
|
+
cumulative `message_delta` events.
|
|
98
|
+
- **Retry discipline** — token-aware backoff.
|
|
99
|
+
- **Abuse vectors** — unauthenticated AI endpoints; hand boundary fixes to
|
|
100
|
+
`plan-input-validation`.
|
|
101
|
+
- **Langfuse cost alerts** — 50/75/90% thresholds; per-user attribution.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Procedure [HIGH freedom]
|
|
106
|
+
|
|
107
|
+
1. **Inventory LLM call sites** and public AI endpoints.
|
|
108
|
+
2. **Test each against Layers 1–3.**
|
|
109
|
+
3. **Score** = worst-case spend × reachability.
|
|
110
|
+
4. **Phase** — Layer 1 caps and daily kill switch first.
|
|
111
|
+
5. **Emit `plan-llm-cost-guardrails.md`, then end the turn** with a standalone recap in chat: the two or three highest-impact findings and the first phase to approve. The file is the deliverable — write it before the recap.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Guardrails [LOW freedom — run exactly]
|
|
116
|
+
|
|
117
|
+
- **Plan only.** No limits, gateway config, or routing changes.
|
|
118
|
+
- **Spend cap is non-negotiable for launch** — flag absence as at least High.
|
|
119
|
+
- **Token-aware or it doesn't count** — don't credit RPM-only limits.
|
|
120
|
+
- **Bounded blast radius**, not zero runaways.
|
|
121
|
+
- **Cross-hand abuse** to `plan-input-validation`.
|
|
122
|
+
|
|
123
|
+
## Self-critique before the burndown [LOW freedom — do not skip]
|
|
124
|
+
|
|
125
|
+
1. **evidenced-not-assumed** — each unbounded path names a call site, not "we should cap AI"
|
|
126
|
+
2. **plan-only** — no limits, gateway, or routing edits this pass
|
|
127
|
+
3. **phase justified** — Layer 1 caps + daily kill switch before fallback polish
|
|
128
|
+
4. **right-owner** — quality/evals → `audit-langfuse-llm`; unauth AI input → `plan-input-validation`
|
|
129
|
+
5. **no-false-safety** — RPM-only is not a token cap; missing spend cap is at least High
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Report template — `plan-llm-cost-guardrails.md`
|
|
134
|
+
|
|
135
|
+
```markdown
|
|
136
|
+
# LLM Cost-Guardrail Audit — <repo>
|
|
137
|
+
|
|
138
|
+
_Audit-only. No limits or routing change until each phase is approved._
|
|
139
|
+
|
|
140
|
+
## Scope
|
|
141
|
+
- LLM call sites: n | Public AI endpoints: n | Langfuse present: ☐
|
|
142
|
+
|
|
143
|
+
## Verdict
|
|
144
|
+
| Layer | Present? | Worst gap |
|
|
145
|
+
|-------|----------|-----------|
|
|
146
|
+
| 1 Limits (token-aware) | partial | unbounded max_tokens |
|
|
147
|
+
| 2 Circuit breakers | ❌ | no daily kill switch |
|
|
148
|
+
| 3 Fallback chain | ❌ | limit = hard error |
|
|
149
|
+
|
|
150
|
+
## Findings
|
|
151
|
+
| # | Call site | Unbounded path | Worst-case | Missing layer | Sev | Direction |
|
|
152
|
+
|---|-----------|----------------|------------|---------------|-----|-----------|
|
|
153
|
+
|
|
154
|
+
## Phased burndown
|
|
155
|
+
- **Phase 1 — Caps & kill switch** → `backend-patterns`
|
|
156
|
+
- **Phase 2 — Circuit breakers** → `backend-patterns`
|
|
157
|
+
- **Phase 3 — Fallback chain** → `backend-patterns`
|
|
158
|
+
- **Phase 4 — Visibility** → `audit-langfuse-llm` / `backend-observability`
|
|
159
|
+
- **Cross-hand** → `plan-input-validation`
|
|
160
|
+
|
|
161
|
+
## Execution handoff
|
|
162
|
+
Simulate a runaway in test env after Phase 1; confirm cap holds before bill moves.
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Chains with
|
|
168
|
+
|
|
169
|
+
- **Observability & spend loop** — pairs with `plan-error-handling` (visibility) and
|
|
170
|
+
`audit-langfuse-llm` (quality); this owns *bounded spend*.
|
|
171
|
+
- **`audit-llm-security`** — LLM10 unbounded consumption is the attack-shaped twin.
|
|
172
|
+
- **`audit-infra-cost`** — hosting/egress, not tokens.
|
|
173
|
+
- **Execution:** `backend-patterns`, `audit-langfuse-llm`, `backend-observability`.
|
|
174
|
+
- **Verify:** sandbox load/abuse test — caps, breakers, fallback trip before spend escapes.
|
|
175
|
+
|
|
176
|
+
> Planned at high effort; executed at the default effort under the approved-plan execution rule (`approved-plan-execution.mdc`), which forbids reward hacking and feature deletion on any model.
|