@kensaurus/skills 0.0.0-stage → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +53 -0
- package/.claude-plugin/plugin.json +40 -0
- package/.cursor-plugin/plugin.json +38 -0
- package/.mcp.json +28 -0
- package/CHANGELOG.md +1790 -0
- package/LICENSE +21 -0
- package/LICENSE-APACHE +62 -0
- package/NOTICE +13 -0
- package/README.md +821 -2
- package/SECURITY.md +55 -0
- package/agents/code-reviewer.md +60 -0
- package/agents/completion-judge.md +89 -0
- package/agents/db-migrator.md +125 -0
- package/agents/debugger.md +47 -0
- package/agents/deploy-checker.md +100 -0
- package/agents/perf-monitor.md +74 -0
- package/assets/favicon.png +0 -0
- package/assets/logo-light.png +0 -0
- package/assets/logo.png +0 -0
- package/assets/logo.svg +6 -0
- package/assets/og.png +0 -0
- package/bin/install.mjs +1127 -0
- package/bin/kenji.js +2 -0
- package/commands/adr.md +17 -0
- package/commands/aeo-plan.md +18 -0
- package/commands/arch-boundaries.md +17 -0
- package/commands/aso-plan.md +18 -0
- package/commands/auth-flows.md +19 -0
- package/commands/backup-plan.md +17 -0
- package/commands/burndown-full.md +25 -0
- package/commands/capacitor-plan.md +18 -0
- package/commands/codemod-safety.md +22 -0
- package/commands/commit.md +18 -0
- package/commands/complete-everything.md +40 -0
- package/commands/cost-plan.md +19 -0
- package/commands/deadcode-plan.md +26 -0
- package/commands/deadcode.md +32 -0
- package/commands/debug-issue.md +17 -0
- package/commands/deps-plan.md +18 -0
- package/commands/docs-plan.md +17 -0
- package/commands/doctrine.md +19 -0
- package/commands/error-plan.md +19 -0
- package/commands/feedback-to-closure.md +36 -0
- package/commands/fix-issue.md +76 -0
- package/commands/gate-logic.md +26 -0
- package/commands/green-repo.md +36 -0
- package/commands/grill-me.md +19 -0
- package/commands/gtm-plan.md +21 -0
- package/commands/gtm-weekly.md +17 -0
- package/commands/gtm.md +22 -0
- package/commands/handoff.md +15 -0
- package/commands/housekeep-backlog.md +18 -0
- package/commands/housekeep-files.md +22 -0
- package/commands/housekeep-gates.md +18 -0
- package/commands/instant-nav.md +11 -0
- package/commands/integrity-plan.md +19 -0
- package/commands/launch-kit.md +16 -0
- package/commands/mcp-guide.md +40 -0
- package/commands/mobile-plan.md +19 -0
- package/commands/native-rn-monorepo/README.md +78 -0
- package/commands/native-rn-monorepo/android-build.md +26 -0
- package/commands/native-rn-monorepo/android-install.md +32 -0
- package/commands/native-rn-monorepo/android-logcat.md +37 -0
- package/commands/native-rn-monorepo/ios-ci-logs.md +56 -0
- package/commands/native-rn-monorepo/ios-ci-status.md +52 -0
- package/commands/native-rn-monorepo/ios-ci-trigger.md +59 -0
- package/commands/native-rn-monorepo/rn-reset.md +50 -0
- package/commands/native-rn-monorepo/rn-ship-ios.md +67 -0
- package/commands/native-rn-monorepo/rn-verify.md +53 -0
- package/commands/perf-plan.md +18 -0
- package/commands/plan-mode.md +74 -0
- package/commands/pr.md +16 -0
- package/commands/pricing-plan.md +20 -0
- package/commands/privacy-plan.md +18 -0
- package/commands/readability.md +12 -0
- package/commands/readme.md +15 -0
- package/commands/refactor.md +15 -0
- package/commands/release-prep.md +17 -0
- package/commands/research.md +25 -0
- package/commands/responsive-audit.md +21 -0
- package/commands/review-code.md +18 -0
- package/commands/rls-plan.md +18 -0
- package/commands/secrets-plan.md +18 -0
- package/commands/security-plan.md +19 -0
- package/commands/ship-and-observe.md +36 -0
- package/commands/skill-conflicts.md +19 -0
- package/commands/slop-plan.md +18 -0
- package/commands/stub-plan.md +18 -0
- package/commands/test-mutation.md +16 -0
- package/commands/test-plan.md +17 -0
- package/commands/test.md +29 -0
- package/commands/thirdparty-web-interface-guidelines.md +185 -0
- package/commands/uiux-plan.md +18 -0
- package/commands/uiux.md +45 -0
- package/commands/update-deps.md +21 -0
- package/commands/validation-plan.md +19 -0
- package/commands-portable/fix-issue.md +72 -0
- package/commands-portable/plan-mode.md +92 -0
- package/commands-portable/research.md +91 -0
- package/docs/screenshots/README.md +5 -0
- package/docs/screenshots/audit-dark.png +0 -0
- package/docs/screenshots/build-dark.png +0 -0
- package/docs/screenshots/grill-dark.png +0 -0
- package/docs/screenshots/hero-dark.png +0 -0
- package/docs/screenshots/hero-light.png +0 -0
- package/docs/screenshots/ship-dark.png +0 -0
- package/docs/screenshots/src/showcase.html +320 -0
- package/hooks/completion-gate.mjs +258 -0
- package/hooks/cursor-hooks.json +13 -0
- package/hooks/hooks.json +15 -0
- package/install.sh +21 -0
- package/llms.txt +40 -0
- package/mcp/README.md +266 -0
- package/mcp/VERSIONS.md +41 -0
- package/mcp/mcp-full.json.template +124 -0
- package/mcp/mcp.json.template +29 -0
- package/mcp/pinned-versions.json +27 -0
- package/package.json +94 -4
- package/rules/approved-plan-execution.mdc +65 -0
- package/rules/full-stack-ship-discipline.mdc +37 -0
- package/rules/native-rn-monorepo/README.md +63 -0
- package/rules/native-rn-monorepo/_project.mdc +69 -0
- package/rules/native-rn-monorepo/native-android.mdc +72 -0
- package/rules/native-rn-monorepo/native-ios.mdc +61 -0
- package/rules/native-rn-monorepo/react-native-js.mdc +78 -0
- package/rules/native-rn-monorepo/web.mdc +60 -0
- package/rules/project-starter/components.mdc +54 -0
- package/rules/project-starter/data-fetching.mdc +77 -0
- package/rules/project-starter/git.mdc +41 -0
- package/rules/project-starter/supabase.mdc +37 -0
- package/rules/project-starter/tailwind.mdc +48 -0
- package/rules/project-starter/typescript.mdc +36 -0
- package/rules/project-starter/web-performance.mdc +42 -0
- package/rules/senior-engineer.mdc +30 -0
- package/rules/shell-first-search.mdc +19 -0
- package/rules/skill-workflows.mdc +35 -0
- package/rules/verification-before-completion.mdc +57 -0
- package/skills/audit-accessibility/SKILL.md +441 -0
- package/skills/audit-agent-speed/SKILL.md +181 -0
- package/skills/audit-agent-speed/scripts/stop-typecheck.mjs +151 -0
- package/skills/audit-analytics/SKILL.md +138 -0
- package/skills/audit-auth-flows/SKILL.md +267 -0
- package/skills/audit-backend-architecture/SKILL.md +266 -0
- package/skills/audit-backend-architecture/references/patterns.md +386 -0
- package/skills/audit-bundle-size/SKILL.md +295 -0
- package/skills/audit-cicd/SKILL.md +218 -0
- package/skills/audit-code-quality/SKILL.md +314 -0
- package/skills/audit-code-review/SKILL.md +289 -0
- package/skills/audit-codemod-safety/SKILL.md +159 -0
- package/skills/audit-db-schema/SKILL.md +465 -0
- package/skills/audit-db-schema/references/details.md +110 -0
- package/skills/audit-doctrine/SKILL.md +189 -0
- package/skills/audit-env-parity/SKILL.md +133 -0
- package/skills/audit-fe-api/SKILL.md +458 -0
- package/skills/audit-gate-logic/SKILL.md +219 -0
- package/skills/audit-i18n/SKILL.md +339 -0
- package/skills/audit-infra-cost/SKILL.md +142 -0
- package/skills/audit-langfuse-llm/SKILL.md +468 -0
- package/skills/audit-langfuse-llm/references/details.md +226 -0
- package/skills/audit-llm-security/SKILL.md +147 -0
- package/skills/audit-monetization-iap/SKILL.md +137 -0
- package/skills/audit-payment-system/SKILL.md +268 -0
- package/skills/audit-payment-system/references/checklist.md +283 -0
- package/skills/audit-performance/SKILL.md +383 -0
- package/skills/audit-performance/references/loading-priority-2026.md +81 -0
- package/skills/audit-realworld/SKILL.md +287 -0
- package/skills/audit-registry-listing/SKILL.md +122 -0
- package/skills/audit-resilience/SKILL.md +153 -0
- package/skills/audit-responsive/SKILL.md +221 -0
- package/skills/audit-responsive/references/checklist.md +166 -0
- package/skills/audit-security/SKILL.md +289 -0
- package/skills/audit-skill-conflicts/SKILL.md +178 -0
- package/skills/audit-ui-states/SKILL.md +146 -0
- package/skills/audit-uiux-design-system/SKILL.md +475 -0
- package/skills/audit-uiux-design-system/references/details.md +71 -0
- package/skills/audit-ux/SKILL.md +381 -0
- package/skills/audit-ux/references/details.md +245 -0
- package/skills/audit-ux-journeys/SKILL.md +215 -0
- package/skills/audit-ux-journeys/references/checklist.md +179 -0
- package/skills/backend-db-performance/SKILL.md +441 -0
- package/skills/backend-error-handling/SKILL.md +489 -0
- package/skills/backend-error-handling/references/details.md +58 -0
- package/skills/backend-observability/SKILL.md +88 -0
- package/skills/backend-patterns/SKILL.md +499 -0
- package/skills/backend-patterns/references/architecture-patterns.md +298 -0
- package/skills/backend-realtime/SKILL.md +403 -0
- package/skills/backend-realtime/references/patterns.md +74 -0
- package/skills/burndown-full/SKILL.md +174 -0
- package/skills/complete-everything/SKILL.md +295 -0
- package/skills/data-pipeline/SKILL.md +109 -0
- package/skills/data-visualization/SKILL.md +488 -0
- package/skills/debug-error/SKILL.md +322 -0
- package/skills/debug-fe-be-integration/SKILL.md +459 -0
- package/skills/debug-sentry-monitor/SKILL.md +497 -0
- package/skills/debug-sentry-monitor/references/details.md +165 -0
- package/skills/deploy-npm/SKILL.md +394 -0
- package/skills/deploy-npm/references/example-mushi-mushi.md +52 -0
- package/skills/deploy-verify/SKILL.md +489 -0
- package/skills/design-api/SKILL.md +379 -0
- package/skills/design-canvas/SKILL.md +155 -0
- package/skills/design-email/SKILL.md +370 -0
- package/skills/design-frontend/SKILL.md +143 -0
- package/skills/design-generative-art/SKILL.md +474 -0
- package/skills/design-mobile-first/SKILL.md +506 -0
- package/skills/design-motion/SKILL.md +333 -0
- package/skills/design-motion/references/delight-interactions.md +191 -0
- package/skills/design-prd/SKILL.md +443 -0
- package/skills/design-system/SKILL.md +457 -0
- package/skills/design-theme/SKILL.md +226 -0
- package/skills/design-theme/themes/tsumagoi-ranch.md +150 -0
- package/skills/docs-adr/SKILL.md +168 -0
- package/skills/docs-coauthor/SKILL.md +368 -0
- package/skills/docs-comparison-pages/SKILL.md +117 -0
- package/skills/docs-domain-modeling/SKILL.md +97 -0
- package/skills/docs-launch-kit/SKILL.md +139 -0
- package/skills/docs-writer/SKILL.md +469 -0
- package/skills/enhance-agent-guardrails/SKILL.md +164 -0
- package/skills/enhance-arch-boundaries/SKILL.md +154 -0
- package/skills/enhance-capacitor-ui/SKILL.md +463 -0
- package/skills/enhance-capacitor-ui/references/details.md +750 -0
- package/skills/enhance-email-deliverability/SKILL.md +143 -0
- package/skills/enhance-growth-loops/SKILL.md +122 -0
- package/skills/enhance-lifecycle-email/SKILL.md +130 -0
- package/skills/enhance-motion/SKILL.md +193 -0
- package/skills/enhance-onboarding/SKILL.md +148 -0
- package/skills/enhance-pwa/SKILL.md +303 -0
- package/skills/enhance-readability/SKILL.md +146 -0
- package/skills/enhance-readme/SKILL.md +496 -0
- package/skills/enhance-readme/package-lock.json +187 -0
- package/skills/enhance-readme/package.json +17 -0
- package/skills/enhance-readme/scripts/generate-readme-blocks.mjs +199 -0
- package/skills/enhance-readme/scripts/record-readme-tour.mjs +442 -0
- package/skills/enhance-skill-prompts/SKILL.md +167 -0
- package/skills/enhance-skill-prompts/references/exemplar-audit-auth-flows.md +311 -0
- package/skills/enhance-ux-laws/SKILL.md +409 -0
- package/skills/enhance-web-conversion/SKILL.md +155 -0
- package/skills/enhance-web-forms/SKILL.md +154 -0
- package/skills/enhance-web-instant-nav/SKILL.md +138 -0
- package/skills/enhance-web-instant-nav/references/bfcache-blockers.md +23 -0
- package/skills/enhance-web-instant-nav/references/early-hints.md +33 -0
- package/skills/enhance-web-instant-nav/references/speculation-rules.md +44 -0
- package/skills/enhance-web-landing/SKILL.md +459 -0
- package/skills/enhance-web-landing/references/details.md +773 -0
- package/skills/enhance-web-redesign/SKILL.md +228 -0
- package/skills/enhance-web-seo/SKILL.md +276 -0
- package/skills/enhance-web-ui/SKILL.md +473 -0
- package/skills/enhance-web-ui/references/details.md +674 -0
- package/skills/enhance-web-ux/HEURISTICS.md +248 -0
- package/skills/enhance-web-ux/PATTERNS.md +375 -0
- package/skills/enhance-web-ux/SKILL.md +464 -0
- package/skills/enhance-web-ux/examples.md +222 -0
- package/skills/enhance-web-ux/references/details.md +406 -0
- package/skills/enhance-web-web3d/SKILL.md +397 -0
- package/skills/enhance-web-web3d/references/css-canvas-effects.md +180 -0
- package/skills/handoff/SKILL.md +66 -0
- package/skills/housekeep-backlog/SKILL.md +149 -0
- package/skills/housekeep-dead-code/SKILL.md +387 -0
- package/skills/housekeep-dead-code/references/ratchet-ci.md +205 -0
- package/skills/housekeep-dead-code/references/supabase-hygiene.md +152 -0
- package/skills/housekeep-design/SKILL.md +207 -0
- package/skills/housekeep-files/SKILL.md +220 -0
- package/skills/housekeep-files/references/naming-and-catalog.md +86 -0
- package/skills/housekeep-files/scripts/housekeep-files.ps1 +360 -0
- package/skills/housekeep-files/scripts/housekeep-files.sh +238 -0
- package/skills/housekeep-gates/SKILL.md +174 -0
- package/skills/iterate-agent-harness/SKILL.md +137 -0
- package/skills/iterate-gtm-weekly/SKILL.md +103 -0
- package/skills/iterate-post-launch/SKILL.md +292 -0
- package/skills/meta-mcp-builder/SKILL.md +313 -0
- package/skills/meta-skill-creator/SKILL.md +304 -0
- package/skills/mobile-capacitor-platform/SKILL.md +103 -0
- package/skills/mobile-emulator-start/SKILL.md +296 -0
- package/skills/mobile-emulator-test/SKILL.md +491 -0
- package/skills/mobile-emulator-test/references/details.md +478 -0
- package/skills/mobile-rn-performance/SKILL.md +107 -0
- package/skills/mobile-rn-screen/SKILL.md +476 -0
- package/skills/mobile-rn-screen/references/details.md +785 -0
- package/skills/mushi-health/SKILL.md +206 -0
- package/skills/mushi-integration/SKILL.md +257 -0
- package/skills/plan-aeo-readiness/SKILL.md +166 -0
- package/skills/plan-antislop/SKILL.md +281 -0
- package/skills/plan-aso/SKILL.md +149 -0
- package/skills/plan-backup-dr/SKILL.md +131 -0
- package/skills/plan-capacitor-hardening/SKILL.md +217 -0
- package/skills/plan-data-integrity/SKILL.md +187 -0
- package/skills/plan-dead-code/SKILL.md +386 -0
- package/skills/plan-dead-code/references/knip-config.md +214 -0
- package/skills/plan-dead-code/references/output-templates.md +133 -0
- package/skills/plan-dead-code/references/preservation-contract.md +50 -0
- package/skills/plan-dead-code/references/residue-greps.md +84 -0
- package/skills/plan-dependency-provenance/SKILL.md +200 -0
- package/skills/plan-docs-sync/SKILL.md +143 -0
- package/skills/plan-docs-sync/references/drift-taxonomy.md +43 -0
- package/skills/plan-docs-sync/references/output-templates.md +33 -0
- package/skills/plan-docs-sync/references/preservation-contract.md +17 -0
- package/skills/plan-error-handling/SKILL.md +205 -0
- package/skills/plan-gtm/SKILL.md +276 -0
- package/skills/plan-gtm/references/benchmarks-2026.md +183 -0
- package/skills/plan-input-validation/SKILL.md +179 -0
- package/skills/plan-llm-cost-guardrails/SKILL.md +176 -0
- package/skills/plan-mobile-readiness/SKILL.md +171 -0
- package/skills/plan-perf-audit/SKILL.md +145 -0
- package/skills/plan-perf-audit/references/audit-scope.md +51 -0
- package/skills/plan-perf-audit/references/output-templates.md +33 -0
- package/skills/plan-perf-audit/references/preservation-contract.md +13 -0
- package/skills/plan-pricing/SKILL.md +173 -0
- package/skills/plan-privacy-compliance/SKILL.md +148 -0
- package/skills/plan-rls-audit/SKILL.md +231 -0
- package/skills/plan-secrets-audit/SKILL.md +181 -0
- package/skills/plan-security-audit/SKILL.md +168 -0
- package/skills/plan-security-audit/references/output-templates.md +36 -0
- package/skills/plan-security-audit/references/owasp-supabase-scope.md +55 -0
- package/skills/plan-security-audit/references/preservation-contract.md +18 -0
- package/skills/plan-stub-checker/SKILL.md +216 -0
- package/skills/plan-stub-checker/references/detection-methodology.md +75 -0
- package/skills/plan-stub-checker/references/detection-taxonomy.md +34 -0
- package/skills/plan-stub-checker/references/output-templates.md +63 -0
- package/skills/plan-stub-checker/references/preservation-contract.md +24 -0
- package/skills/plan-test-coverage/SKILL.md +170 -0
- package/skills/plan-test-coverage/references/methodology.md +54 -0
- package/skills/plan-test-coverage/references/output-templates.md +34 -0
- package/skills/plan-test-coverage/references/preservation-contract.md +15 -0
- package/skills/plan-uiux-unification/SKILL.md +230 -0
- package/skills/plan-uiux-unification/references/output-templates.md +67 -0
- package/skills/plan-uiux-unification/references/phase-workbook.md +85 -0
- package/skills/plan-uiux-unification/references/preservation-contract.md +24 -0
- package/skills/protocol-browser-anti-stall/SKILL.md +211 -0
- package/skills/protocol-browser-anti-stall/references/mcp-to-cli-map.md +113 -0
- package/skills/protocol-browser-anti-stall/references/playwright-session-coordination.md +170 -0
- package/skills/research/SKILL.md +422 -0
- package/skills/test-exploratory/SKILL.md +165 -0
- package/skills/test-exploratory/references/charter-template.md +29 -0
- package/skills/test-load/SKILL.md +126 -0
- package/skills/test-mutation/SKILL.md +160 -0
- package/skills/test-playwright/SKILL.md +354 -0
- package/skills/test-qa/SKILL.md +364 -0
- package/skills/test-qa/references/details.md +268 -0
- package/skills/test-red-team/SKILL.md +386 -0
- package/skills/test-red-team/references/owasp-attack-checklist.md +193 -0
- package/skills/test-unit/SKILL.md +259 -0
- package/skills/test-unit/references/details.md +267 -0
- package/skills/test-visual-regression/SKILL.md +132 -0
- package/skills/thirdparty-emil-design-eng/ATTRIBUTION.md +20 -0
- package/skills/thirdparty-emil-design-eng/SKILL.md +21 -0
- package/skills/thirdparty-emil-design-eng/references/emil-design-eng.md +676 -0
- package/skills/thirdparty-ui-ux-pro-max/ATTRIBUTION.md +22 -0
- package/skills/thirdparty-ui-ux-pro-max/SKILL.md +304 -0
- package/skills/thirdparty-ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/thirdparty-ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/thirdparty-ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/thirdparty-ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/thirdparty-ui-ux-pro-max/data/products.csv +97 -0
- package/skills/thirdparty-ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/thirdparty-ui-ux-pro-max/data/styles.csv +68 -0
- package/skills/thirdparty-ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/thirdparty-ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/thirdparty-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/thirdparty-ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/search.py +114 -0
- package/skills/thirdparty-web-interface-guidelines/ATTRIBUTION.md +23 -0
- package/skills/thirdparty-web-interface-guidelines/SKILL.md +190 -0
- package/skills/workflow-build-feature/SKILL.md +118 -0
- package/skills/workflow-coding-discipline/SKILL.md +140 -0
- package/skills/workflow-environment-ready/SKILL.md +128 -0
- package/skills/workflow-feature-flag/SKILL.md +262 -0
- package/skills/workflow-feedback-to-closure/SKILL.md +165 -0
- package/skills/workflow-fix-and-ship/SKILL.md +136 -0
- package/skills/workflow-git-commit/SKILL.md +200 -0
- package/skills/workflow-green-repo/SKILL.md +166 -0
- package/skills/workflow-grilling/SKILL.md +73 -0
- package/skills/workflow-gtm/SKILL.md +153 -0
- package/skills/workflow-housekeep/SKILL.md +453 -0
- package/skills/workflow-housekeep/references/templates.md +109 -0
- package/skills/workflow-launch-ready/SKILL.md +145 -0
- package/skills/workflow-merge-conflicts/SKILL.md +62 -0
- package/skills/workflow-onboard/SKILL.md +99 -0
- package/skills/workflow-parallel-agents/SKILL.md +164 -0
- package/skills/workflow-pr/SKILL.md +197 -0
- package/skills/workflow-quality-gate/SKILL.md +147 -0
- package/skills/workflow-refactor/SKILL.md +274 -0
- package/skills/workflow-release-prep/SKILL.md +207 -0
- package/skills/workflow-ship-and-observe/SKILL.md +164 -0
- package/skills/workflow-spec-tdd/SKILL.md +141 -0
- package/skills/workflow-spec-tdd/references/spec-template.md +126 -0
- package/skills/workflow-spec-tdd/references/tdd-patterns.md +167 -0
- package/skills-cursor/babysit/SKILL.md +17 -0
- package/skills-cursor/canvas/SKILL.md +142 -0
- package/skills-cursor/canvas/sdk/canvas-tokens.d.ts +235 -0
- package/skills-cursor/canvas/sdk/chart-primitives.d.ts +200 -0
- package/skills-cursor/canvas/sdk/dag-layout.d.ts +102 -0
- package/skills-cursor/canvas/sdk/diff-view.d.ts +130 -0
- package/skills-cursor/canvas/sdk/form-primitives.d.ts +194 -0
- package/skills-cursor/canvas/sdk/hooks.d.ts +117 -0
- package/skills-cursor/canvas/sdk/index.d.ts +47 -0
- package/skills-cursor/canvas/sdk/theme.d.ts +61 -0
- package/skills-cursor/canvas/sdk/todo-list.d.ts +49 -0
- package/skills-cursor/canvas/sdk/ui-primitives.d.ts +549 -0
- package/skills-cursor/canvas/sdk/ui-primitives.test.d.ts +2 -0
- package/skills-cursor/create-hook/SKILL.md +238 -0
- package/skills-cursor/create-rule/SKILL.md +185 -0
- package/skills-cursor/create-skill/SKILL.md +269 -0
- package/skills-cursor/create-skill/references/authoring-guide.md +182 -0
- package/skills-cursor/create-subagent/SKILL.md +228 -0
- package/skills-cursor/migrate-to-skills/SKILL.md +121 -0
- package/skills-cursor/shell/SKILL.md +22 -0
- package/skills-cursor/split-to-prs/SKILL.md +47 -0
- package/skills-cursor/statusline/SKILL.md +193 -0
- package/skills-cursor/update-cli-config/SKILL.md +85 -0
- package/skills-cursor/update-cursor-settings/SKILL.md +137 -0
- package/skills.sh.json +297 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: test-load
|
|
3
|
+
description: >
|
|
4
|
+
Design and run a k6 or Artillery load profile: throughput, latency
|
|
5
|
+
percentiles, error rate, breaking point. Use when "load test this", "will it
|
|
6
|
+
handle launch traffic", or "find the breaking point". Code-level resilience
|
|
7
|
+
→ audit-resilience.
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# test-load — Measured concurrency, not a guess
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED** — journey design `[HIGH freedom]`; env choice
|
|
14
|
+
and profile order `[LOW freedom]`. **Never production without explicit
|
|
15
|
+
sign-off and rate caps.**
|
|
16
|
+
|
|
17
|
+
Turn "I think it'll hold" into numbers: at N concurrent users, p95 is X, error
|
|
18
|
+
rate is Y, it falls over at Z.
|
|
19
|
+
|
|
20
|
+
**`audit-resilience` tells you retries exist; this proves whether they save you
|
|
21
|
+
when 500 people arrive at once.**
|
|
22
|
+
|
|
23
|
+
## This skill vs neighbors
|
|
24
|
+
|
|
25
|
+
| Skill | Owns |
|
|
26
|
+
|---|---|
|
|
27
|
+
| **test-load** (this) | Concurrent traffic profiles + measured SLO |
|
|
28
|
+
| `audit-resilience` | Timeouts/retries/idempotency *in code* |
|
|
29
|
+
| `audit-infra-cost` | Consumes these capacity numbers to right-size |
|
|
30
|
+
| `audit-performance` | Single-user Web Vitals / bundle |
|
|
31
|
+
| `backend-db-performance` | Query/index fixes after this names the bottleneck |
|
|
32
|
+
| `plan-llm-cost-guardrails` | Model-token spend, not HTTP concurrency |
|
|
33
|
+
|
|
34
|
+
Load against production only with explicit sign-off and rate caps — an uncapped run is a self-inflicted outage. Prefer prod-like staging.
|
|
35
|
+
|
|
36
|
+
## How to reason
|
|
37
|
+
|
|
38
|
+
1. **Observe** — profile, VUs, p95/p99, error types, host/DB metrics
|
|
39
|
+
2. **Interpret** — SLO miss vs capacity vs cascade (pool / limiter / memory)
|
|
40
|
+
3. **Classify** — pass / degrade / breaking-point / invalid (unsigned prod)
|
|
41
|
+
4. **Severity** — named failing resource + whether failure is graceful
|
|
42
|
+
|
|
43
|
+
## Worked example
|
|
44
|
+
|
|
45
|
+
> **Observe:** load profile 200 VU, p95 2.4s (SLO 500ms), 8% 529s; DB
|
|
46
|
+
> `remaining connections = 0`.
|
|
47
|
+
> **Interpret:** pool exhaustion, not the Node process.
|
|
48
|
+
> **Classify:** SLO fail; breaking resource = DB pool.
|
|
49
|
+
> **Handoff:** `backend-db-performance` (pool + queries); numbers → `audit-infra-cost`.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Phase 0 — Detect stack and set targets [HIGH freedom]
|
|
54
|
+
|
|
55
|
+
- Tool: **k6** preferred (scriptable, CI-friendly); Artillery as fallback
|
|
56
|
+
- Target env + auth method
|
|
57
|
+
- **Goal first** (without it the test is noise):
|
|
58
|
+
- Expected peak concurrency (ads / launch)
|
|
59
|
+
- Acceptable p95/p99 and max error rate (SLO)
|
|
60
|
+
- Capacity (hold at peak) vs breaking point (where it fails)
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Phase 1 — Model realistic load [HIGH freedom]
|
|
65
|
+
|
|
66
|
+
- **Journeys, not one URL** — signup → browse → action, with think-time
|
|
67
|
+
- **Mix** — weight by real traffic (mostly reads)
|
|
68
|
+
- **Data variety** — pool of users/inputs, not one cached row
|
|
69
|
+
- **Auth** — real login or pre-provisioned tokens (unauthenticated misses RLS cost)
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Phase 2 — Graduated profiles [LOW freedom — smoke → load → stress → spike]
|
|
74
|
+
|
|
75
|
+
1. **Smoke** — few VUs; script + baseline healthy
|
|
76
|
+
2. **Load** — ramp to expected peak, soak several minutes (SLO pass/fail)
|
|
77
|
+
3. **Stress** — past peak until degrade; name the failing resource
|
|
78
|
+
4. **Spike** — instant jump (viral ad); does it recover?
|
|
79
|
+
5. Optional **soak** — 30+ min for leaks / pool exhaustion
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Phase 3 — Measure the right things [HIGH freedom]
|
|
84
|
+
|
|
85
|
+
- Latency **percentiles** (p50/p95/p99) — averages hide pain
|
|
86
|
+
- Error rate **and types** (timeout vs 5xx vs refused)
|
|
87
|
+
- Throughput (req/s) per level
|
|
88
|
+
- Bottleneck: DB pool, function concurrency, rate limiter, memory, cold start
|
|
89
|
+
- Correlate Supabase / Sentry / host metrics during the run
|
|
90
|
+
|
|
91
|
+
Keep the reusable script in the repo as a reviewable change (commit only when asked). Hand capacity numbers to `audit-infra-cost`.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Definition of Done
|
|
96
|
+
|
|
97
|
+
- [ ] Tool + env chosen; prod excluded or signed + capped
|
|
98
|
+
- [ ] SLO stated before running
|
|
99
|
+
- [ ] Journeys weighted, think-time, varied data, real auth
|
|
100
|
+
- [ ] Smoke → load → stress → spike run
|
|
101
|
+
- [ ] Percentiles, errors, throughput captured
|
|
102
|
+
- [ ] Breaking point + failing resource named
|
|
103
|
+
- [ ] SLO verdict + fix handoff
|
|
104
|
+
- [ ] Script in the repo, ready to commit
|
|
105
|
+
|
|
106
|
+
## Self-critique before reporting [LOW freedom — do not skip]
|
|
107
|
+
|
|
108
|
+
1. **SLO stated first** — a run without a target is noise
|
|
109
|
+
2. **Not unsigned prod** — if only prod exists, stop
|
|
110
|
+
3. **Percentiles, not averages**
|
|
111
|
+
4. **Breaking resource named** — not "it got slow"
|
|
112
|
+
5. **Journeys, not one URL**
|
|
113
|
+
|
|
114
|
+
## Output format
|
|
115
|
+
|
|
116
|
+
1. **Design** — SLO, journeys, env, profiles
|
|
117
|
+
2. **Results** — profile | VUs | throughput | p50/p95/p99 | errors | vs SLO
|
|
118
|
+
3. **Breaking point** — where, why, graceful vs cascade
|
|
119
|
+
4. **Handoff** — `backend-db-performance`, `backend-patterns`, `audit-resilience`, `audit-infra-cost`
|
|
120
|
+
|
|
121
|
+
## Related
|
|
122
|
+
|
|
123
|
+
- `audit-resilience` — code-level NFRs
|
|
124
|
+
- `audit-infra-cost` — right-size from these numbers
|
|
125
|
+
- `backend-db-performance` / `backend-patterns` — fix the named bottleneck
|
|
126
|
+
- `audit-performance` — single-user frontend
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: test-mutation
|
|
3
|
+
description: >
|
|
4
|
+
Run mutation testing (StrykerJS, mutmut) to measure whether tests assert
|
|
5
|
+
behavior, not just execute lines. Use when "add mutation testing", "are our
|
|
6
|
+
tests real", "can our test suite be gamed", or after an agent bulk-generated
|
|
7
|
+
tests.
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# test-mutation — Coverage proves the test ran; mutants prove it would notice
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED** — scope and triage `[HIGH freedom]`; first run
|
|
14
|
+
and CI floor `[LOW freedom — measure, then ratchet]`. Never start with the
|
|
15
|
+
whole repo.
|
|
16
|
+
|
|
17
|
+
Install and run the gate coverage cannot close. **Coverage proves the test
|
|
18
|
+
*ran* the code; mutation testing proves the test would *notice* if the
|
|
19
|
+
code were wrong.** The tool makes hundreds of small deliberate bugs
|
|
20
|
+
(mutants) — flip `>` to `>=`, delete a statement, replace a return — and
|
|
21
|
+
reruns the tests. Survivors mark code the tests execute but verify
|
|
22
|
+
nothing.
|
|
23
|
+
|
|
24
|
+
This is the specific counter to agent-generated suites: an agent can
|
|
25
|
+
trivially produce 90% coverage with no meaningful assertions, and every
|
|
26
|
+
coverage ratchet will wave them through. Mutants do not care about
|
|
27
|
+
coverage theater.
|
|
28
|
+
|
|
29
|
+
## This skill vs neighbors
|
|
30
|
+
|
|
31
|
+
| Skill | Owns |
|
|
32
|
+
|---|---|
|
|
33
|
+
| **test-mutation** (this) | Install / run / triage mutation testing; score ratchet |
|
|
34
|
+
| `plan-test-coverage` | What *should* be tested — plan only, no harness |
|
|
35
|
+
| `test-unit` | Write the tests |
|
|
36
|
+
| `audit-gate-logic` / `housekeep-gates` | Ratchet policy this score plugs into |
|
|
37
|
+
| `enhance-agent-guardrails` | Wording of the agent-rule hook |
|
|
38
|
+
|
|
39
|
+
## How to reason (every survivor)
|
|
40
|
+
|
|
41
|
+
1. **Observe** — mutant (operator/line) and which tests still passed
|
|
42
|
+
2. **Interpret** — missing assertion, untested branch, dead code, or equivalent?
|
|
43
|
+
3. **Classify** — the four triage classes in Phase 2
|
|
44
|
+
4. **Severity** — blast radius: entitlements/auth/money outrank formatters
|
|
45
|
+
|
|
46
|
+
## Worked example
|
|
47
|
+
|
|
48
|
+
> **Observe:** Stryker flipped `>` to `>=` in `entitlements.ts` expiry check;
|
|
49
|
+
> suite green; mutation score 62% on a 94% coverage file.
|
|
50
|
+
> **Interpret:** tests execute the line but never assert the boundary.
|
|
51
|
+
> **Classify:** missing assertion.
|
|
52
|
+
> **Severity:** high — paid access could extend a day.
|
|
53
|
+
> **Fix:** assert expired-at-exact-boundary is denied; then re-run incremental.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Phase 0 — Detect stack and scope deliberately [HIGH freedom]
|
|
58
|
+
|
|
59
|
+
Identify the runner and pick the tool: **StrykerJS** (Jest / Vitest /
|
|
60
|
+
Mocha, TS-aware), **mutmut** / cosmic-ray (Python), or the ecosystem
|
|
61
|
+
built-in. Then scope — this step decides whether mutation testing
|
|
62
|
+
*survives* in the repo:
|
|
63
|
+
|
|
64
|
+
**Never start with the whole repo.** Each mutant is a test run. A 6-hour
|
|
65
|
+
first run gets the tool deleted. Scope the first pass to where a silent
|
|
66
|
+
bug costs most: money movement, auth, entitlements, data mutation, core
|
|
67
|
+
business logic. Explicitly exclude: generated code, config, type-only
|
|
68
|
+
files, UI glue better covered by `test-visual-regression`, and third-party
|
|
69
|
+
wrappers.
|
|
70
|
+
|
|
71
|
+
Record the suite's baseline runtime. Mutation runtime ≈ (mutants ×
|
|
72
|
+
affected-test runtime). Turn on per-test coverage analysis from day one
|
|
73
|
+
so only tests covering the mutated line rerun.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Phase 1 — Configure for signal, not noise [HIGH freedom]
|
|
78
|
+
|
|
79
|
+
- **Mutate patterns:** scoped critical paths only, via `mutate:` globs.
|
|
80
|
+
- **Incremental mode on** (Stryker `--incremental`): later runs only
|
|
81
|
+
re-test mutants in changed code — this is what makes per-PR runs
|
|
82
|
+
feasible.
|
|
83
|
+
- **Thresholds:** `high` / `low` for reporting, and `break` (CI-failing
|
|
84
|
+
floor) at or slightly below the *measured* first score. Never invent an
|
|
85
|
+
aspirational floor; measure, then ratchet. Same
|
|
86
|
+
auto-tighten-with-reviewed-resets policy as `housekeep-gates`.
|
|
87
|
+
- **Timeouts:** mutants that loop are killed by timeout — keep the factor
|
|
88
|
+
sane or runs balloon.
|
|
89
|
+
- **Reporters:** HTML for humans (each survivor in context), JSON for the
|
|
90
|
+
ratchet.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Phase 2 — First run and triage the survivors [LOW freedom — classify every survivor]
|
|
95
|
+
|
|
96
|
+
Run, then classify every surviving mutant — this triage **is** the
|
|
97
|
+
deliverable:
|
|
98
|
+
|
|
99
|
+
1. **Missing assertion** — the test executes the line but asserts nothing
|
|
100
|
+
about its effect. Fix: strengthen the test. Each of these is a hole a
|
|
101
|
+
bug could walk through today.
|
|
102
|
+
2. **Untested branch** — no test reaches the mutated logic despite
|
|
103
|
+
file-level coverage. Fix: add the case (hand to `plan-test-coverage`).
|
|
104
|
+
3. **Dead / vestigial code** — the mutant survives because the code has
|
|
105
|
+
no observable effect. Fix: delete the code, not add a test
|
|
106
|
+
(`workflow-housekeep`).
|
|
107
|
+
4. **Equivalent mutant** — the mutation does not change behavior (e.g.
|
|
108
|
+
`<` vs `<=` on a boundary that cannot occur). No test can kill it;
|
|
109
|
+
mark ignored with a comment. Expect a small percentage; a large one
|
|
110
|
+
means the mutator is mutating the wrong things.
|
|
111
|
+
|
|
112
|
+
Prioritize by blast radius: a survivor in `entitlements.ts` outranks
|
|
113
|
+
fifty in a formatting helper.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Phase 3 — Wire into CI (sustainably) [HIGH freedom; floor from measured score = LOW]
|
|
118
|
+
|
|
119
|
+
- **Per-PR:** incremental mutation on changed files only, as a job wired
|
|
120
|
+
into the aggregator gate (`housekeep-gates`).
|
|
121
|
+
- **Scheduled full run** (nightly / weekly) over the mutated scope;
|
|
122
|
+
publishes the score, updates the ratchet floor upward per policy, and
|
|
123
|
+
files the new-survivor list.
|
|
124
|
+
- **Score ratchet:** `break` rises as the score does (flake tolerance);
|
|
125
|
+
lowering it is a separate reviewed PR, never bundled.
|
|
126
|
+
- **Agent-rule hook:** bulk-generated tests must pass a mutation run over
|
|
127
|
+
the touched files before "done" counts. `enhance-agent-guardrails`
|
|
128
|
+
installs the wording.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Definition of Done
|
|
133
|
+
|
|
134
|
+
- [ ] Tool chosen for the stack; per-test coverage analysis enabled
|
|
135
|
+
- [ ] Scope limited to critical paths with exclusions recorded; whole-repo explicitly deferred
|
|
136
|
+
- [ ] Incremental mode on; timeouts and reporters configured
|
|
137
|
+
- [ ] First run complete; baseline mutation score recorded
|
|
138
|
+
- [ ] Every survivor triaged into missing-assertion / untested-branch / dead-code / equivalent, with fixes filed by class
|
|
139
|
+
- [ ] `break` threshold set from the measured score and wired to auto-tighten; resets require a separate reviewed PR
|
|
140
|
+
- [ ] Per-PR incremental job in the aggregator gate; scheduled full run publishing the score
|
|
141
|
+
- [ ] Agent-rule hook added: generated tests validated by mutation before done
|
|
142
|
+
- [ ] Total added CI time measured and reported
|
|
143
|
+
|
|
144
|
+
## Self-critique before reporting [LOW freedom — do not skip]
|
|
145
|
+
|
|
146
|
+
1. **Scope was narrow** — whole-repo first run is a failure mode, not a flex
|
|
147
|
+
2. **Every survivor classified** — no "look at the HTML later"
|
|
148
|
+
3. **Floor measured** — `break` from the first score, not an aspiration
|
|
149
|
+
4. **Right owner** — write the missing test → `test-unit`; delete dead code → `plan-dead-code` → `housekeep-dead-code`
|
|
150
|
+
5. **Strengthen tests only on approval**
|
|
151
|
+
|
|
152
|
+
## Output format
|
|
153
|
+
|
|
154
|
+
1. **Scope & config** — mutated paths | exclusions | tool + modes
|
|
155
|
+
2. **Score report** — baseline mutation score | per-module breakdown | coverage-vs-mutation gap (high coverage + low mutation score = assertion theater)
|
|
156
|
+
3. **Survivor triage** — mutant | file:line | class | fix filed
|
|
157
|
+
4. **CI wiring** — PR job, scheduled run, ratchet policy
|
|
158
|
+
|
|
159
|
+
Implement the harness and triage. Strengthen tests only on approval —
|
|
160
|
+
each fix is a reviewable change.
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: test-playwright
|
|
3
|
+
description: >
|
|
4
|
+
Close the PDCA loop on this session's diff. Headed playwright-cli, fix as
|
|
5
|
+
you go. Use when "test my changes", "PDCA this". Pixel diffs →
|
|
6
|
+
test-visual-regression. Story CRUD → test-qa. Monkey / guest vs logged-in
|
|
7
|
+
→ test-exploratory.
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# test-playwright — Develop → Test → Fix (PDCA)
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED** — blast-radius and UX judgment `[HIGH freedom]`;
|
|
14
|
+
session, anti-stall, and live re-test after each fix `[LOW freedom — run exactly]`.
|
|
15
|
+
Driver is **playwright-cli**, never Playwright MCP.
|
|
16
|
+
|
|
17
|
+
The job is not done when the code compiles. It is done when you have driven the live app as a user, found what's broken or clunky, and **fixed it** — Check and Act are the deliverable.
|
|
18
|
+
|
|
19
|
+
> **Plan** = the change you just made. **Do** = already in the code.
|
|
20
|
+
> **Check** = drive the live app (this skill). **Act** = fix every pain
|
|
21
|
+
> point in the same turn.
|
|
22
|
+
|
|
23
|
+
Your turn ends after Phase 7, or at a BLOCKED item that needs the user's decision — not with PAIN found and unfixed, and not with a fix that has not been re-driven live.
|
|
24
|
+
|
|
25
|
+
Read `protocol-browser-anti-stall` before any browser action — Rule 0
|
|
26
|
+
(manual & headed), navigation guard, ≤3s waits, fresh `snapshot` after every
|
|
27
|
+
state change, max-4-attempts-per-goal, tab discipline, and persisted auth
|
|
28
|
+
(`references/playwright-session-coordination.md`).
|
|
29
|
+
|
|
30
|
+
## This skill vs neighbors
|
|
31
|
+
|
|
32
|
+
| Skill | Owns |
|
|
33
|
+
|:------|:-----|
|
|
34
|
+
| **test-playwright** (this) | This-diff + blast radius; **fix as you go** |
|
|
35
|
+
| `test-qa` | Full-app story/CRUD smoke — not this session's diff |
|
|
36
|
+
| `test-exploratory` | Unscripted **guest vs authed** wander (do not reclaim) |
|
|
37
|
+
| `test-red-team` | Hostile feature×dimension matrix; report first |
|
|
38
|
+
| `test-visual-regression` | Pixel baselines |
|
|
39
|
+
|
|
40
|
+
## How to reason (each surface)
|
|
41
|
+
|
|
42
|
+
1. **Observe** — screenshot + console + network vs this session's diff
|
|
43
|
+
2. **Interpret** — broken / data-wrong / pipeline / friction / visual / a11y
|
|
44
|
+
3. **Classify** — PASS / PAIN (fix now) / BLOCKED (needs decision)
|
|
45
|
+
4. **Severity** — ship-blocker vs polish; Act now unless risky/out-of-scope
|
|
46
|
+
|
|
47
|
+
## Worked example
|
|
48
|
+
|
|
49
|
+
> **Observe:** create item → toast "Saved"; `requests` shows POST 500; list
|
|
50
|
+
> empty after `reload`. Diff touched the create action.
|
|
51
|
+
> **Interpret:** optimistic UI over a failed write.
|
|
52
|
+
> **Classify:** PAIN — pipeline lie. Fix the action, then re-drive.
|
|
53
|
+
> **Severity:** ship-blocker.
|
|
54
|
+
> **Act:** fix the handler; re-test until 2xx + persist + clean console.
|
|
55
|
+
|
|
56
|
+
## Core principles
|
|
57
|
+
|
|
58
|
+
- **Drive a visible browser by hand, never a script.** Headed (never
|
|
59
|
+
`--headless`). One real action at a time. `eval` / `run-code`
|
|
60
|
+
inspection-only; no `*.spec.ts`, no `npx playwright test`.
|
|
61
|
+
- **Test only what this session changed — plus its blast radius.** Not a
|
|
62
|
+
full-app crawl (`test-qa`). Not guest-vs-logged-in wander
|
|
63
|
+
(`test-exploratory`).
|
|
64
|
+
- **Fix as you go — full-stack.** Bug, 500, dead button, ugly layout →
|
|
65
|
+
root cause now, then re-test. Don't batch "later".
|
|
66
|
+
- **Evidence or it didn't happen.** Finding = screenshot + console +
|
|
67
|
+
network. Fix = live re-test against the real backend.
|
|
68
|
+
- **Red-team your own work.** Assume the change is subtly wrong. Try to
|
|
69
|
+
break it.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Workflow checklist
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
PDCA Progress:
|
|
77
|
+
- [ ] Phase 1: Scope — what did this session change? (blast radius)
|
|
78
|
+
- [ ] Phase 2: Environment — dev server up, app loads, authenticated
|
|
79
|
+
- [ ] Phase 3: Walk the changed flows as a real user
|
|
80
|
+
- [ ] Phase 4: Fix pain points + errors as you find them (full-stack)
|
|
81
|
+
- [ ] Phase 5: Backend truth-check (Sentry / Supabase / logs)
|
|
82
|
+
- [ ] Phase 6: Red-team + critique + enhancement ideas
|
|
83
|
+
- [ ] Phase 7: Re-test everything you fixed; report
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Phase 1: Scope the session changes [HIGH freedom]
|
|
89
|
+
|
|
90
|
+
Scope is this session's diff plus its blast radius; full-app coverage belongs to `test-qa`.
|
|
91
|
+
|
|
92
|
+
1. **Get the diff** (each workspace repo root if needed):
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
git status --short
|
|
96
|
+
git diff --stat HEAD
|
|
97
|
+
git diff HEAD --name-only
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
2. **Map files → user-facing surfaces.**
|
|
101
|
+
- Page/route → test that page.
|
|
102
|
+
- Shared component/hook/util → every importer (`grep -rl "ComponentName" src/`) — the **blast radius**.
|
|
103
|
+
- API / controller / service → every UI flow that calls it.
|
|
104
|
+
- Migration / schema / RLS → read AND write paths, as the client's role.
|
|
105
|
+
- Config / env / pricing / prompt → the feature it drives.
|
|
106
|
+
|
|
107
|
+
3. **Stack & dev URL** (only what you need): `scripts.dev` port; auth +
|
|
108
|
+
test credentials (`.env.local`, `.env.test`, README — ask once if none);
|
|
109
|
+
backend MCPs this session: Supabase, Sentry, Firecrawl.
|
|
110
|
+
|
|
111
|
+
4. **Write the test plan** before opening the browser:
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
SESSION SCOPE:
|
|
115
|
+
- Repos touched: [list]
|
|
116
|
+
- Changed surfaces (pages/flows): [list]
|
|
117
|
+
- Blast radius (shared code → consumers): [list]
|
|
118
|
+
- Backend paths touched (APIs/tables/RPCs): [list]
|
|
119
|
+
- Dev URL: http://localhost:[port] Auth: [method / test account]
|
|
120
|
+
- User journeys to drive: [ordered list of 2–6 real flows]
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Phase 2: Environment verification [LOW freedom — session exact]
|
|
126
|
+
|
|
127
|
+
Read `protocol-browser-anti-stall/references/playwright-session-coordination.md`
|
|
128
|
+
before opening the browser.
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
PW="npx --yes @playwright/cli@latest"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
1. Check `terminals/` for a running dev server. If none, start it
|
|
135
|
+
(`block_until_ms` sized to startup) or tell the user and stop.
|
|
136
|
+
2. Name the session after the task (`-s=qa-<feature>`). Never reuse another
|
|
137
|
+
agent's name.
|
|
138
|
+
3. `$PW -s=qa-<feature> open --headed <dev-url>` — add
|
|
139
|
+
`--persistent --profile "$HOME/.playwright-cli-profiles/<app>"` when
|
|
140
|
+
login is needed.
|
|
141
|
+
4. Anti-stall: `sleep 2` → `snapshot` → verify content rendered.
|
|
142
|
+
5. `console` + `requests` → baseline before the changed feature.
|
|
143
|
+
6. **Auth (log in once, by hand — it persists):**
|
|
144
|
+
- Protected route → already signed in? continue. `--persistent --profile`
|
|
145
|
+
survives turns.
|
|
146
|
+
- Else complete login **in the visible window**. Verify a protected route.
|
|
147
|
+
- **Google accounts cannot sign in from a Playwright-launched browser** —
|
|
148
|
+
one-time real-Chrome login in the coordination reference.
|
|
149
|
+
- Lighter alternative: `state-save` / `state-load`
|
|
150
|
+
`.playwright-mcp/auth/<host>.json`.
|
|
151
|
+
- Do **not** log out unless testing logout.
|
|
152
|
+
7. `$PW -s=qa-<feature> close` when the run is done.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Phase 3: Walk the changed flows as a real user [HIGH freedom; cycle = LOW]
|
|
157
|
+
|
|
158
|
+
For each Phase 1 journey, live it. Per step (anti-stall throughout):
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
S="-s=qa-<feature>"
|
|
162
|
+
$PW $S goto "<url>"
|
|
163
|
+
sleep 2 && $PW $S snapshot
|
|
164
|
+
$PW $S screenshot --filename ".playwright-mcp/<step>.png"
|
|
165
|
+
$PW $S click <ref> # one action: click / type / fill / select / …
|
|
166
|
+
$PW $S snapshot # FRESH refs after every interaction
|
|
167
|
+
$PW $S console
|
|
168
|
+
$PW $S requests
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Then judge: WORK + feel GOOD? PASS or PAIN POINT.
|
|
172
|
+
|
|
173
|
+
| Category | Look for |
|
|
174
|
+
|----------|----------|
|
|
175
|
+
| **Broken** | Blank, error boundary, 404/500, stuck spinner, dead button, no-op submit |
|
|
176
|
+
| **Data wrong** | `undefined` / `null` / `NaN` / `[object Object]` / `Invalid Date`, bad totals, stale after mutation |
|
|
177
|
+
| **Pipeline** | UI shows change but API failed; create missing until refresh; deleted item returns; optimistic never confirms |
|
|
178
|
+
| **Validation** | Empty/invalid submit silent; no inline errors; silent backend reject |
|
|
179
|
+
| **UX friction** | Confusing copy, no loading/success/error, hidden primary, too many clicks |
|
|
180
|
+
| **Visual** | Overflow, cramped/wasted space, broken images/icons, dark-mode, layout shift |
|
|
181
|
+
| **A11y basics** | Unlabeled inputs, unnamed controls, invisible focus, low contrast |
|
|
182
|
+
|
|
183
|
+
**Mutations E2E:** after create/update/delete confirm (a) network 2xx, (b) UI
|
|
184
|
+
reflects it, (c) survives hard `reload`, (d) if Supabase MCP — the row
|
|
185
|
+
changed. Prefix test data `QA-TEST-` and clean it up.
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Phase 4: Fix pain points and errors — as you go [HIGH freedom; re-test = LOW]
|
|
190
|
+
|
|
191
|
+
Fix the root cause before moving on.
|
|
192
|
+
|
|
193
|
+
1. **Diagnose to root cause** — don't patch symptoms.
|
|
194
|
+
- Frontend → component/hook/state.
|
|
195
|
+
- 4xx/5xx → payload + backend log; controller/service/validation.
|
|
196
|
+
FE↔BE mismatch → `debug-fe-be-integration` mindset.
|
|
197
|
+
- `relation does not exist` / missing column → migration not deployed.
|
|
198
|
+
**Deploy via Supabase MCP** (`apply_migration` for DDL, `execute_sql`
|
|
199
|
+
for data) AND keep the versioned file on disk. (`full-stack-ship-discipline`
|
|
200
|
+
— requested schema ships; `DELETE`/`UPDATE`/`TRUNCATE` on real rows asks.)
|
|
201
|
+
- RLS → verify as the client's role (`SET ROLE anon;` / `authenticated;`),
|
|
202
|
+
fix policy, re-verify.
|
|
203
|
+
- Config/env/CORS → fix and note other environments.
|
|
204
|
+
2. **Apply** surgically — change the lines the fix needs, not whole files. Run diagnostics on the files you edited (`ReadLints` in Cursor; the repo's lint/typecheck in Claude Code).
|
|
205
|
+
3. **Re-drive the same flow** — green console, 2xx, correct UI, persisted
|
|
206
|
+
data. A fix is not done until re-tested live.
|
|
207
|
+
4. Genuinely out of scope or risky → STOP and surface it; don't silently
|
|
208
|
+
ship a broken flow.
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
FIX LOG:
|
|
212
|
+
- [surface] [symptom] → root cause: [...] → fix: [file(s)] → re-test: PASS/▢
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Phase 5: Backend truth-check (full-stack) [HIGH freedom]
|
|
218
|
+
|
|
219
|
+
Don't trust the UI alone. Look up MCP schemas first.
|
|
220
|
+
|
|
221
|
+
**Sentry** — new/related production errors on touched surfaces:
|
|
222
|
+
|
|
223
|
+
```json
|
|
224
|
+
sentry:search_issues
|
|
225
|
+
{
|
|
226
|
+
"organizationSlug": "<ORG>", "query": "unresolved issues in the last 7 days",
|
|
227
|
+
"projectSlugOrId": "<PROJECT>", "regionUrl": "<REGION_URL>", "limit": 25
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
`analyze_issue_with_seer` on anything that maps to your change. Resolve
|
|
232
|
+
(`update_issue`) only AFTER a verified fix; it needs the Triage skill on the
|
|
233
|
+
Sentry MCP connection, so resolve in the Sentry UI if the tool is missing.
|
|
234
|
+
|
|
235
|
+
**Supabase** — `list_tables`, `execute_sql`, `query_logs` (API:
|
|
236
|
+
`source = 'edge_logs'`; Postgres: `source = 'postgres_logs'`), `get_advisors`.
|
|
237
|
+
New ERROR advisors from your change are in scope. Confirm
|
|
238
|
+
deployed migrations on the remote (`information_schema` / `pg_proc` / `pg_policies`).
|
|
239
|
+
|
|
240
|
+
**App logs / terminal** — server stack traces that never reached the browser.
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Phase 6: Red-team and critique [HIGH freedom]
|
|
245
|
+
|
|
246
|
+
Skeptical reviewer + demanding user, **on the changed surfaces only**.
|
|
247
|
+
Full-app hostile matrix → `test-red-team`. Guest wander → `test-exploratory`.
|
|
248
|
+
|
|
249
|
+
- **Break it:** double-submit, rapid toggle, back/forward, deep links, empty
|
|
250
|
+
states, huge inputs, special chars (`<script>`, `'; DROP TABLE`, emoji),
|
|
251
|
+
slow/failed network.
|
|
252
|
+
- **Question the UX:** primary action obvious in 3s? Feedback immediate?
|
|
253
|
+
Would a real user get stuck? Deep polish → `enhance-web-ux` / `enhance-web-ui`.
|
|
254
|
+
- **Question the design:** match existing tokens/patterns, or drift?
|
|
255
|
+
- **Research when unsure:** Firecrawl `firecrawl_search` for current
|
|
256
|
+
pattern/feature best practices; map back to concrete changes.
|
|
257
|
+
|
|
258
|
+
Capture **enhancement ideas** — concrete: what, why, effort. Distinguish
|
|
259
|
+
"fix now" (Phase 4) from "suggested next" (report).
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Phase 7: Re-test and report [LOW freedom — do not skip]
|
|
264
|
+
|
|
265
|
+
1. Re-drive every fixed flow end to end. Confirm green.
|
|
266
|
+
2. Clean up `QA-TEST-` data; reset settings; verify cleanup in DB if applicable.
|
|
267
|
+
3. Report:
|
|
268
|
+
|
|
269
|
+
```markdown
|
|
270
|
+
## PDCA Test Report — [feature / session summary]
|
|
271
|
+
|
|
272
|
+
### Scope (what this session changed)
|
|
273
|
+
- Repos: [...] Surfaces tested: [...] Backend paths: [...]
|
|
274
|
+
- Dev URL: [...] Auth: [...]
|
|
275
|
+
|
|
276
|
+
### Flows driven (as a user)
|
|
277
|
+
| # | Journey | Result | Evidence |
|
|
278
|
+
|---|---------|--------|----------|
|
|
279
|
+
| 1 | [...] | PASS / FIXED / BLOCKED | [screenshot/console/network] |
|
|
280
|
+
|
|
281
|
+
### Fixed this turn (Act)
|
|
282
|
+
| # | Surface | Symptom | Root cause | Fix (files) | Re-tested |
|
|
283
|
+
|---|---------|---------|-----------|-------------|-----------|
|
|
284
|
+
| 1 | [...] | [...] | [FE/BE/DB/config] | [...] | ✅ |
|
|
285
|
+
|
|
286
|
+
### Still broken / out of scope (needs decision)
|
|
287
|
+
| # | Surface | Finding | Why not fixed | Recommendation |
|
|
288
|
+
|---|---------|-------|---------------|----------------|
|
|
289
|
+
|
|
290
|
+
### Backend truth-check
|
|
291
|
+
- Sentry: [new/related issues + status]
|
|
292
|
+
- Supabase: [schema/data/logs/advisors — migration deployed? Y/N]
|
|
293
|
+
|
|
294
|
+
### Red-team findings
|
|
295
|
+
| # | Surface | Severity | Finding | Evidence |
|
|
296
|
+
|---|---------|----------|---------|----------|
|
|
297
|
+
|
|
298
|
+
### Enhancement suggestions (Plan the next cycle)
|
|
299
|
+
1. [concrete idea] — why it helps — rough effort
|
|
300
|
+
|
|
301
|
+
### Verdict
|
|
302
|
+
**Ship / Ship after fixes / Not ready** — [1–2 sentence justification]
|
|
303
|
+
Console clean: [Y/N] · All flows green on re-test: [Y/N] · Test data cleaned: [Y/N]
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
## Self-critique before reporting [LOW freedom — do not skip]
|
|
307
|
+
|
|
308
|
+
1. **Scope** — this-diff + blast radius, not full-app (`test-qa`) or guest wander
|
|
309
|
+
2. **Driver** — playwright-cli, headed, named session; never Playwright MCP
|
|
310
|
+
3. **Act** — every PAIN fixed or explicitly blocked; live re-test after each fix
|
|
311
|
+
4. **Evidence** — finding = screenshot+console+network; fix = green re-drive
|
|
312
|
+
5. **Honest verdict** — red console or unfixed PAIN ≠ Ship
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## playwright-cli commands
|
|
317
|
+
|
|
318
|
+
`PW="npx --yes @playwright/cli@latest"`, then `$PW -s=<session> <command>`.
|
|
319
|
+
Snapshot/ref-based; sessions are isolated — re-`snapshot` after each state
|
|
320
|
+
change. **Headless by default — pass `--headed` on `open`.**
|
|
321
|
+
|
|
322
|
+
**Drive:** `open --headed`, `goto`, `go-back`, `click`, `type`, `fill`,
|
|
323
|
+
`select`, `check`, `uncheck`, `hover`, `drag`, `drop`, `press`, `upload`,
|
|
324
|
+
`dialog-accept`, `resize`.
|
|
325
|
+
|
|
326
|
+
**Observe:** `snapshot`, `find`, `screenshot --filename .playwright-mcp/<name>.png`,
|
|
327
|
+
`console`, `requests`, `request <n>`.
|
|
328
|
+
|
|
329
|
+
**Wait:** `sleep N` (shell, ≤3s) or
|
|
330
|
+
`run-code "async (page) => { await page.getByText('X').first().waitFor({ timeout: 5000 }); }"`.
|
|
331
|
+
|
|
332
|
+
**Inspection-only:** `eval`, `run-code`.
|
|
333
|
+
|
|
334
|
+
Old MCP → CLI map: `protocol-browser-anti-stall/references/mcp-to-cli-map.md`.
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## Guardrails
|
|
339
|
+
|
|
340
|
+
1. **Manual & headed, never scripted** — visible browser; no `*.spec.ts`,
|
|
341
|
+
no `npx playwright test`. Anti-stall Rule 0.
|
|
342
|
+
2. **Scope discipline** — session changes + blast radius. Full-app → `test-qa`.
|
|
343
|
+
3. **Own your session** — every command `-s=<task>`; never `close-all` /
|
|
344
|
+
`kill-all` sessions you didn't open.
|
|
345
|
+
4. **Auth reuse** — log in once into `--persistent --profile`; don't log out
|
|
346
|
+
unless testing logout.
|
|
347
|
+
5. **Anti-stall always** — never block >3s; max 4 attempts; `[TIMEOUT]` and skip.
|
|
348
|
+
6. **Fix the root cause, full-stack** — UI, API, DB, config; re-test live.
|
|
349
|
+
7. **Schema in sync** — MCP changes get a versioned migration file; verify remote.
|
|
350
|
+
8. **Ask before mutating real data** — requested DDL ships; prod row
|
|
351
|
+
`DELETE`/`UPDATE`/`TRUNCATE` asks first.
|
|
352
|
+
9. **No secrets in chat** — `.env*` by name only.
|
|
353
|
+
10. **Evidence** — screenshot + console + network + a green re-test.
|
|
354
|
+
11. **Honest verdict** — don't declare done with a red console or unfixed PAIN.
|