@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,114 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
UI/UX Pro Max Search - BM25 search engine for UI/UX style guides
|
|
5
|
+
Usage: python search.py "<query>" [--domain <domain>] [--stack <stack>] [--max-results 3]
|
|
6
|
+
python search.py "<query>" --design-system [-p "Project Name"]
|
|
7
|
+
python search.py "<query>" --design-system --persist [-p "Project Name"] [--page "dashboard"]
|
|
8
|
+
|
|
9
|
+
Domains: style, prompt, color, chart, landing, product, ux, typography
|
|
10
|
+
Stacks: html-tailwind, react, nextjs
|
|
11
|
+
|
|
12
|
+
Persistence (Master + Overrides pattern):
|
|
13
|
+
--persist Save design system to design-system/MASTER.md
|
|
14
|
+
--page Also create a page-specific override file in design-system/pages/
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
import argparse
|
|
18
|
+
import sys
|
|
19
|
+
import io
|
|
20
|
+
from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
|
|
21
|
+
from design_system import generate_design_system, persist_design_system
|
|
22
|
+
|
|
23
|
+
# Force UTF-8 for stdout/stderr to handle emojis on Windows (cp1252 default)
|
|
24
|
+
if sys.stdout.encoding and sys.stdout.encoding.lower() != 'utf-8':
|
|
25
|
+
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
|
26
|
+
if sys.stderr.encoding and sys.stderr.encoding.lower() != 'utf-8':
|
|
27
|
+
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def format_output(result):
|
|
31
|
+
"""Format results for Claude consumption (token-optimized)"""
|
|
32
|
+
if "error" in result:
|
|
33
|
+
return f"Error: {result['error']}"
|
|
34
|
+
|
|
35
|
+
output = []
|
|
36
|
+
if result.get("stack"):
|
|
37
|
+
output.append(f"## UI Pro Max Stack Guidelines")
|
|
38
|
+
output.append(f"**Stack:** {result['stack']} | **Query:** {result['query']}")
|
|
39
|
+
else:
|
|
40
|
+
output.append(f"## UI Pro Max Search Results")
|
|
41
|
+
output.append(f"**Domain:** {result['domain']} | **Query:** {result['query']}")
|
|
42
|
+
output.append(f"**Source:** {result['file']} | **Found:** {result['count']} results\n")
|
|
43
|
+
|
|
44
|
+
for i, row in enumerate(result['results'], 1):
|
|
45
|
+
output.append(f"### Result {i}")
|
|
46
|
+
for key, value in row.items():
|
|
47
|
+
value_str = str(value)
|
|
48
|
+
if len(value_str) > 300:
|
|
49
|
+
value_str = value_str[:300] + "..."
|
|
50
|
+
output.append(f"- **{key}:** {value_str}")
|
|
51
|
+
output.append("")
|
|
52
|
+
|
|
53
|
+
return "\n".join(output)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
if __name__ == "__main__":
|
|
57
|
+
parser = argparse.ArgumentParser(description="UI Pro Max Search")
|
|
58
|
+
parser.add_argument("query", help="Search query")
|
|
59
|
+
parser.add_argument("--domain", "-d", choices=list(CSV_CONFIG.keys()), help="Search domain")
|
|
60
|
+
parser.add_argument("--stack", "-s", choices=AVAILABLE_STACKS, help="Stack-specific search (html-tailwind, react, nextjs)")
|
|
61
|
+
parser.add_argument("--max-results", "-n", type=int, default=MAX_RESULTS, help="Max results (default: 3)")
|
|
62
|
+
parser.add_argument("--json", action="store_true", help="Output as JSON")
|
|
63
|
+
# Design system generation
|
|
64
|
+
parser.add_argument("--design-system", "-ds", action="store_true", help="Generate complete design system recommendation")
|
|
65
|
+
parser.add_argument("--project-name", "-p", type=str, default=None, help="Project name for design system output")
|
|
66
|
+
parser.add_argument("--format", "-f", choices=["ascii", "markdown"], default="ascii", help="Output format for design system")
|
|
67
|
+
# Persistence (Master + Overrides pattern)
|
|
68
|
+
parser.add_argument("--persist", action="store_true", help="Save design system to design-system/MASTER.md (creates hierarchical structure)")
|
|
69
|
+
parser.add_argument("--page", type=str, default=None, help="Create page-specific override file in design-system/pages/")
|
|
70
|
+
parser.add_argument("--output-dir", "-o", type=str, default=None, help="Output directory for persisted files (default: current directory)")
|
|
71
|
+
|
|
72
|
+
args = parser.parse_args()
|
|
73
|
+
|
|
74
|
+
# Design system takes priority
|
|
75
|
+
if args.design_system:
|
|
76
|
+
result = generate_design_system(
|
|
77
|
+
args.query,
|
|
78
|
+
args.project_name,
|
|
79
|
+
args.format,
|
|
80
|
+
persist=args.persist,
|
|
81
|
+
page=args.page,
|
|
82
|
+
output_dir=args.output_dir
|
|
83
|
+
)
|
|
84
|
+
print(result)
|
|
85
|
+
|
|
86
|
+
# Print persistence confirmation
|
|
87
|
+
if args.persist:
|
|
88
|
+
project_slug = args.project_name.lower().replace(' ', '-') if args.project_name else "default"
|
|
89
|
+
print("\n" + "=" * 60)
|
|
90
|
+
print(f"✅ Design system persisted to design-system/{project_slug}/")
|
|
91
|
+
print(f" 📄 design-system/{project_slug}/MASTER.md (Global Source of Truth)")
|
|
92
|
+
if args.page:
|
|
93
|
+
page_filename = args.page.lower().replace(' ', '-')
|
|
94
|
+
print(f" 📄 design-system/{project_slug}/pages/{page_filename}.md (Page Overrides)")
|
|
95
|
+
print("")
|
|
96
|
+
print(f"📖 Usage: When building a page, check design-system/{project_slug}/pages/[page].md first.")
|
|
97
|
+
print(f" If exists, its rules override MASTER.md. Otherwise, use MASTER.md.")
|
|
98
|
+
print("=" * 60)
|
|
99
|
+
# Stack search
|
|
100
|
+
elif args.stack:
|
|
101
|
+
result = search_stack(args.query, args.stack, args.max_results)
|
|
102
|
+
if args.json:
|
|
103
|
+
import json
|
|
104
|
+
print(json.dumps(result, indent=2, ensure_ascii=False))
|
|
105
|
+
else:
|
|
106
|
+
print(format_output(result))
|
|
107
|
+
# Domain search
|
|
108
|
+
else:
|
|
109
|
+
result = search(args.query, args.domain, args.max_results)
|
|
110
|
+
if args.json:
|
|
111
|
+
import json
|
|
112
|
+
print(json.dumps(result, indent=2, ensure_ascii=False))
|
|
113
|
+
else:
|
|
114
|
+
print(format_output(result))
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Attribution — thirdparty-web-interface-guidelines
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| **Upstream** | [vercel-labs/web-interface-guidelines](https://github.com/vercel-labs/web-interface-guidelines) |
|
|
6
|
+
| **Guidelines** | [vercel.com/design/guidelines](https://vercel.com/design/guidelines) |
|
|
7
|
+
| **Install script** | `curl -fsSL https://vercel.com/design/guidelines/install \| bash` |
|
|
8
|
+
| **Author** | Vercel Design Engineering |
|
|
9
|
+
| **License** | [MIT](https://github.com/vercel-labs/web-interface-guidelines/blob/main/LICENSE) — Copyright (c) 2025 Vercel Labs |
|
|
10
|
+
| **Local name** | `thirdparty-web-interface-guidelines` |
|
|
11
|
+
| **Curated in** | [kensaurus/skills](https://github.com/kensaurus/skills) |
|
|
12
|
+
|
|
13
|
+
## Companion command
|
|
14
|
+
|
|
15
|
+
Slash command template: `commands/thirdparty-web-interface-guidelines.md`
|
|
16
|
+
Copy to `.cursor/commands/` in a project (or `~/.cursor/commands/` globally) for `/thirdparty-web-interface-guidelines`.
|
|
17
|
+
|
|
18
|
+
## Update policy
|
|
19
|
+
|
|
20
|
+
1. Fetch latest from `https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md`.
|
|
21
|
+
2. Update both `SKILL.md` and `commands/thirdparty-web-interface-guidelines.md`.
|
|
22
|
+
3. Preserve `thirdparty-` prefix and attribution blocks.
|
|
23
|
+
4. Run `./install.sh` or `cursor-sync`.
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: thirdparty-web-interface-guidelines
|
|
3
|
+
description: >
|
|
4
|
+
Third-party skill — Vercel Web Interface Guidelines compliance (focus,
|
|
5
|
+
forms, animation, copy). Use when the user names Vercel or web interface
|
|
6
|
+
guidelines. Generic a11y → audit-accessibility.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Web Interface Guidelines
|
|
10
|
+
|
|
11
|
+
> **Third-party skill** (upstream-maintained). See [ATTRIBUTION.md](ATTRIBUTION.md).
|
|
12
|
+
> Upstream: [vercel-labs/web-interface-guidelines](https://github.com/vercel-labs/web-interface-guidelines) · [vercel.com/design/guidelines](https://vercel.com/design/guidelines) · Local name: `thirdparty-web-interface-guidelines`
|
|
13
|
+
|
|
14
|
+
Review target files for compliance. Read files, check against rules below. Output concise but comprehensive—sacrifice grammar for brevity. High signal-to-noise.
|
|
15
|
+
|
|
16
|
+
When the user provides specific files or patterns, review those. Otherwise ask which files to review.
|
|
17
|
+
|
|
18
|
+
## Rules
|
|
19
|
+
|
|
20
|
+
### Accessibility
|
|
21
|
+
|
|
22
|
+
- Icon-only buttons need `aria-label`
|
|
23
|
+
- Form controls need `<label>` or `aria-label`
|
|
24
|
+
- Interactive elements need keyboard handlers (`onKeyDown`/`onKeyUp`)
|
|
25
|
+
- `<button>` for actions, `<a>`/`<Link>` for navigation (not `<div onClick>`)
|
|
26
|
+
- Images need `alt` (or `alt=""` if decorative)
|
|
27
|
+
- Decorative icons need `aria-hidden="true"`
|
|
28
|
+
- Async updates (toasts, validation) need `aria-live="polite"`
|
|
29
|
+
- Use semantic HTML (`<button>`, `<a>`, `<label>`, `<table>`) before ARIA
|
|
30
|
+
- Headings hierarchical `<h1>`–`<h6>`; include skip link for main content
|
|
31
|
+
- `scroll-margin-top` on heading anchors
|
|
32
|
+
|
|
33
|
+
### Focus States
|
|
34
|
+
|
|
35
|
+
- Interactive elements need visible focus: `focus-visible:ring-*` or equivalent
|
|
36
|
+
- Never `outline-none` / `outline: none` without focus replacement
|
|
37
|
+
- Use `:focus-visible` over `:focus` (avoid focus ring on click)
|
|
38
|
+
- Group focus with `:focus-within` for compound controls
|
|
39
|
+
|
|
40
|
+
### Forms
|
|
41
|
+
|
|
42
|
+
- Inputs need `autocomplete` and meaningful `name`
|
|
43
|
+
- Use correct `type` (`email`, `tel`, `url`, `number`) and `inputmode`
|
|
44
|
+
- Never block paste (`onPaste` + `preventDefault`)
|
|
45
|
+
- Labels clickable (`htmlFor` or wrapping control)
|
|
46
|
+
- Disable spellcheck on emails, codes, usernames (`spellCheck={false}`)
|
|
47
|
+
- Checkboxes/radios: label + control share single hit target (no dead zones)
|
|
48
|
+
- Submit button stays enabled until request starts; spinner during request
|
|
49
|
+
- Errors inline next to fields; focus first error on submit
|
|
50
|
+
- Placeholders end with `…` and show example pattern
|
|
51
|
+
- `autocomplete="off"` on non-auth fields to avoid password manager triggers
|
|
52
|
+
- Warn before navigation with unsaved changes (`beforeunload` or router guard)
|
|
53
|
+
|
|
54
|
+
### Animation
|
|
55
|
+
|
|
56
|
+
- Honor `prefers-reduced-motion` (provide reduced variant or disable)
|
|
57
|
+
- Animate `transform`/`opacity` only (compositor-friendly)
|
|
58
|
+
- Never `transition: all`—list properties explicitly
|
|
59
|
+
- Set correct `transform-origin`
|
|
60
|
+
- SVG: transforms on `<g>` wrapper with `transform-box: fill-box; transform-origin: center`
|
|
61
|
+
- Animations interruptible—respond to user input mid-animation
|
|
62
|
+
|
|
63
|
+
### Typography
|
|
64
|
+
|
|
65
|
+
- `…` not `...`
|
|
66
|
+
- Curly quotes `"` `"` not straight `"`
|
|
67
|
+
- Non-breaking spaces: `10 MB`, `⌘ K`, brand names
|
|
68
|
+
- Loading states end with `…`: `"Loading…"`, `"Saving…"`
|
|
69
|
+
- `font-variant-numeric: tabular-nums` for number columns/comparisons
|
|
70
|
+
- Use `text-wrap: balance` or `text-pretty` on headings (prevents widows)
|
|
71
|
+
|
|
72
|
+
### Content Handling
|
|
73
|
+
|
|
74
|
+
- Text containers handle long content: `truncate`, `line-clamp-*`, or `break-words`
|
|
75
|
+
- Flex children need `min-w-0` to allow text truncation
|
|
76
|
+
- Handle empty states—don't render broken UI for empty strings/arrays
|
|
77
|
+
- User-generated content: anticipate short, average, and very long inputs
|
|
78
|
+
|
|
79
|
+
### Images
|
|
80
|
+
|
|
81
|
+
- `<img>` needs explicit `width` and `height` (prevents CLS)
|
|
82
|
+
- Below-fold images: `loading="lazy"`
|
|
83
|
+
- Above-fold critical images: `priority` or `fetchpriority="high"`
|
|
84
|
+
|
|
85
|
+
### Performance
|
|
86
|
+
|
|
87
|
+
- Large lists (>50 items): virtualize (`virtua`, `content-visibility: auto`)
|
|
88
|
+
- No layout reads in render (`getBoundingClientRect`, `offsetHeight`, `offsetWidth`, `scrollTop`)
|
|
89
|
+
- Batch DOM reads/writes; avoid interleaving
|
|
90
|
+
- Prefer uncontrolled inputs; controlled inputs must be cheap per keystroke
|
|
91
|
+
- Add `<link rel="preconnect">` for CDN/asset domains
|
|
92
|
+
- Critical fonts: `<link rel="preload" as="font">` with `font-display: swap`
|
|
93
|
+
|
|
94
|
+
### Navigation & State
|
|
95
|
+
|
|
96
|
+
- URL reflects state—filters, tabs, pagination, expanded panels in query params
|
|
97
|
+
- Links use `<a>`/`<Link>` (Cmd/Ctrl+click, middle-click support)
|
|
98
|
+
- Deep-link all stateful UI (if uses `useState`, consider URL sync via nuqs or similar)
|
|
99
|
+
- Destructive actions need confirmation modal or undo window—never immediate
|
|
100
|
+
|
|
101
|
+
### Touch & Interaction
|
|
102
|
+
|
|
103
|
+
- `touch-action: manipulation` (prevents double-tap zoom delay)
|
|
104
|
+
- `-webkit-tap-highlight-color` set intentionally
|
|
105
|
+
- `overscroll-behavior: contain` in modals/drawers/sheets
|
|
106
|
+
- During drag: disable text selection, `inert` on dragged elements
|
|
107
|
+
- `autoFocus` sparingly—desktop only, single primary input; avoid on mobile
|
|
108
|
+
|
|
109
|
+
### Safe Areas & Layout
|
|
110
|
+
|
|
111
|
+
- Full-bleed layouts need `env(safe-area-inset-*)` for notches
|
|
112
|
+
- Avoid unwanted scrollbars: `overflow-x-hidden` on containers, fix content overflow
|
|
113
|
+
- Flex/grid over JS measurement for layout
|
|
114
|
+
|
|
115
|
+
### Dark Mode & Theming
|
|
116
|
+
|
|
117
|
+
- `color-scheme: dark` on `<html>` for dark themes (fixes scrollbar, inputs)
|
|
118
|
+
- `<meta name="theme-color">` matches page background
|
|
119
|
+
- Native `<select>`: explicit `background-color` and `color` (Windows dark mode)
|
|
120
|
+
|
|
121
|
+
### Locale & i18n
|
|
122
|
+
|
|
123
|
+
- Dates/times: use `Intl.DateTimeFormat` not hardcoded formats
|
|
124
|
+
- Numbers/currency: use `Intl.NumberFormat` not hardcoded formats
|
|
125
|
+
- Detect language via `Accept-Language` / `navigator.languages`, not IP
|
|
126
|
+
- Brand names, code tokens, identifiers: wrap with `translate="no"` to prevent garbled auto-translation
|
|
127
|
+
|
|
128
|
+
### Hydration Safety
|
|
129
|
+
|
|
130
|
+
- Inputs with `value` need `onChange` (or use `defaultValue` for uncontrolled)
|
|
131
|
+
- Date/time rendering: guard against hydration mismatch (server vs client)
|
|
132
|
+
- `suppressHydrationWarning` only where truly needed
|
|
133
|
+
|
|
134
|
+
### Hover & Interactive States
|
|
135
|
+
|
|
136
|
+
- Buttons/links need `hover:` state (visual feedback)
|
|
137
|
+
- Interactive states increase contrast: hover/active/focus more prominent than rest
|
|
138
|
+
|
|
139
|
+
### Content & Copy
|
|
140
|
+
|
|
141
|
+
- Active voice: "Install the CLI" not "The CLI will be installed"
|
|
142
|
+
- Title Case for headings/buttons (Chicago style)
|
|
143
|
+
- Numerals for counts: "8 deployments" not "eight"
|
|
144
|
+
- Specific button labels: "Save API Key" not "Continue"
|
|
145
|
+
- Error messages include fix/next step, not just problem
|
|
146
|
+
- Second person; avoid first person
|
|
147
|
+
- `&` over "and" where space-constrained
|
|
148
|
+
|
|
149
|
+
### Anti-patterns (flag these)
|
|
150
|
+
|
|
151
|
+
- `user-scalable=no` or `maximum-scale=1` disabling zoom
|
|
152
|
+
- `onPaste` with `preventDefault`
|
|
153
|
+
- `transition: all`
|
|
154
|
+
- `outline-none` without focus-visible replacement
|
|
155
|
+
- Inline `onClick` navigation without `<a>`
|
|
156
|
+
- `<div>` or `<span>` with click handlers (should be `<button>`)
|
|
157
|
+
- Images without dimensions
|
|
158
|
+
- Large arrays `.map()` without virtualization
|
|
159
|
+
- Form inputs without labels
|
|
160
|
+
- Icon buttons without `aria-label`
|
|
161
|
+
- Hardcoded date/number formats (use `Intl.*`)
|
|
162
|
+
- `autoFocus` without clear justification
|
|
163
|
+
|
|
164
|
+
## Output Format
|
|
165
|
+
|
|
166
|
+
Group by file. Use `file:line` format (VS Code clickable). Terse findings.
|
|
167
|
+
|
|
168
|
+
```text
|
|
169
|
+
## src/Button.tsx
|
|
170
|
+
|
|
171
|
+
src/Button.tsx:42 - icon button missing aria-label
|
|
172
|
+
src/Button.tsx:18 - input lacks label
|
|
173
|
+
src/Button.tsx:55 - animation missing prefers-reduced-motion
|
|
174
|
+
src/Button.tsx:67 - transition: all → list properties
|
|
175
|
+
|
|
176
|
+
## src/Modal.tsx
|
|
177
|
+
|
|
178
|
+
src/Modal.tsx:12 - missing overscroll-behavior: contain
|
|
179
|
+
src/Modal.tsx:34 - "..." → "…"
|
|
180
|
+
|
|
181
|
+
## src/Card.tsx
|
|
182
|
+
|
|
183
|
+
✓ pass
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
State issue + location. Skip explanation unless fix non-obvious. No preamble.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
**Source:** [vercel-labs/web-interface-guidelines](https://github.com/vercel-labs/web-interface-guidelines) · [Vercel Web Interface Guidelines](https://vercel.com/design/guidelines). Installed in kenji as `thirdparty-web-interface-guidelines`. See [ATTRIBUTION.md](ATTRIBUTION.md).
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-build-feature
|
|
3
|
+
description: >
|
|
4
|
+
Build a feature end to end: spec and TDD, implement, unit tests, Playwright
|
|
5
|
+
check, PR. Use when "build a feature" or "implement this end-to-end".
|
|
6
|
+
Spec/TDD loop only → workflow-spec-tdd. One bug → workflow-fix-and-ship.
|
|
7
|
+
license: MIT
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# workflow-build-feature — End-to-End Feature Build
|
|
11
|
+
|
|
12
|
+
**Degree of freedom: MIXED.** How to implement Phase 2 `[HIGH freedom]`;
|
|
13
|
+
phase order and "no implementation before RED" `[LOW freedom — run exactly]`.
|
|
14
|
+
|
|
15
|
+
One command that runs the full feature loop. Don't skip phases — each gate
|
|
16
|
+
catches a class of defects the next phase can't.
|
|
17
|
+
|
|
18
|
+
## How to reason
|
|
19
|
+
|
|
20
|
+
1. **Contract** — what observable behavior is in / out of scope?
|
|
21
|
+
2. **Sequence** — which phase is next, and what would skipping it hide?
|
|
22
|
+
3. **Prove** — RED was real; GREEN and smoke cover the contract
|
|
23
|
+
4. **Handoff** — PR evidence is complete; no silent "looks done"
|
|
24
|
+
|
|
25
|
+
## Worked example
|
|
26
|
+
|
|
27
|
+
> **Contract:** "add a forgot-password link" — email reset, not a magic-link login rewrite.
|
|
28
|
+
> **Sequence:** spec + RED on the request-reset handler before any UI.
|
|
29
|
+
> **Prove:** RED failed on missing route; GREEN + Playwright submits the form and sees the check-email state.
|
|
30
|
+
> **Handoff:** PR links the spec, the RED/GREEN commands, and the smoke screenshot.
|
|
31
|
+
|
|
32
|
+
## Self-critique before reporting
|
|
33
|
+
|
|
34
|
+
- **Phases intact** — none of spec / RED / unit / smoke / PR were skipped
|
|
35
|
+
- **RED was real** — the failing test existed before implementation
|
|
36
|
+
- **Full-stack** — if data was touched, the migration was applied and verified
|
|
37
|
+
- **Right owner** — one named bug → `workflow-fix-and-ship`; spec loop only → `workflow-spec-tdd`
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Phase sequence [LOW freedom — run exactly]
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
1. SPEC → workflow-spec-tdd (contract, plan, RED test)
|
|
45
|
+
2. BUILD → implement against the spec (GREEN)
|
|
46
|
+
3. UNIT TEST → test-unit (edge cases, mocks, coverage)
|
|
47
|
+
4. SMOKE → test-playwright (drive the live app as a real user, fix pain points)
|
|
48
|
+
5. PR → workflow-pr (create PR with test evidence)
|
|
49
|
+
```
|
|
50
|
+
The turn ends at the Done criteria or at a real gate — a decision only the user can make, a missing credential, a failing service. A phase summary is a progress note, not a stopping point.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Phase 1: Spec (read workflow-spec-tdd) [LOW freedom — run exactly]
|
|
55
|
+
|
|
56
|
+
> Read the `workflow-spec-tdd` skill and follow it.
|
|
57
|
+
|
|
58
|
+
Key outputs:
|
|
59
|
+
- Written spec (what it does, what it doesn't do, acceptance criteria)
|
|
60
|
+
- File-mapped implementation plan (which files to create/edit)
|
|
61
|
+
- A RED failing test that encodes the acceptance criteria
|
|
62
|
+
|
|
63
|
+
When the ask is loosely specified, read the relevant routes, schema, tests, and sibling features broadly before writing the spec, so it is grounded in what the repo does rather than the first plausible reading.
|
|
64
|
+
|
|
65
|
+
**Do not write implementation code until the spec and RED test exist.**
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Phase 2: Build [HIGH freedom]
|
|
70
|
+
|
|
71
|
+
Implement against the spec. Rules:
|
|
72
|
+
- One logical change per commit
|
|
73
|
+
- Match the file patterns already in the repo — no new abstractions unless the spec calls for them
|
|
74
|
+
- Full-stack: if the feature reads/writes data, verify the DB migration is applied before the frontend ships (see full-stack-ship-discipline rule)
|
|
75
|
+
- Scope stays where the spec put it. A pre-existing bug you find on the way is a follow-up in the PR description, not part of this change. Scratch scripts and one-off checks stay out of the repo. Edit files surgically — change the lines the feature needs, do not rewrite the file around them.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Phase 3: Unit tests (read test-unit) [LOW freedom — hand off]
|
|
80
|
+
|
|
81
|
+
> Read the `test-unit` skill and follow it.
|
|
82
|
+
|
|
83
|
+
Focus on:
|
|
84
|
+
- The new code's happy path, error paths, and edge cases
|
|
85
|
+
- Any shared utility functions introduced
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Phase 4: Smoke test (read test-playwright) [LOW freedom — hand off]
|
|
90
|
+
|
|
91
|
+
> Read the `test-playwright` skill and follow it.
|
|
92
|
+
|
|
93
|
+
Drive the live app through the new feature as a real user. Fix pain points inline (full-stack: UI + API + DB). Capture screenshots as evidence.
|
|
94
|
+
|
|
95
|
+
Before any browser action, apply `protocol-browser-anti-stall` rules.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Phase 5: PR (read workflow-pr) [LOW freedom — hand off]
|
|
100
|
+
|
|
101
|
+
> Read the `workflow-pr` skill and follow it.
|
|
102
|
+
|
|
103
|
+
Include in the PR description:
|
|
104
|
+
- Link to the spec / acceptance criteria
|
|
105
|
+
- Screenshots or screen recording from Phase 4
|
|
106
|
+
- Migration notes if schema changed
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Done criteria [LOW freedom — do not skip]
|
|
111
|
+
|
|
112
|
+
- [ ] Spec written and agreed
|
|
113
|
+
- [ ] RED test exists and was failing before implementation
|
|
114
|
+
- [ ] Implementation makes test GREEN
|
|
115
|
+
- [ ] Unit tests cover happy path + at least one error path
|
|
116
|
+
- [ ] Smoke test drove the live app and found no blockers
|
|
117
|
+
- [ ] DB migration applied and verified (if applicable)
|
|
118
|
+
- [ ] PR open with description and evidence
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-coding-discipline
|
|
3
|
+
description: >
|
|
4
|
+
Guardrails for writing, editing, refactoring, or debugging code: surface
|
|
5
|
+
assumptions, simplicity first, surgical changes. Use when vibe-coding keeps
|
|
6
|
+
producing wrong results, or for "think before coding" or "surgical changes".
|
|
7
|
+
license: MIT
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Karpathy Behavioral Guidelines
|
|
11
|
+
|
|
12
|
+
**Degree of freedom: HIGH.** How strictly to apply each guardrail is judgment.
|
|
13
|
+
Trivial one-liners may skip the full loop; a wrong architectural guess may not.
|
|
14
|
+
|
|
15
|
+
## How to reason
|
|
16
|
+
|
|
17
|
+
1. **Observe** — what is already in the repo vs what you are about to invent
|
|
18
|
+
2. **Interpret** — is this a one-liner or a tradeoff that needs a question?
|
|
19
|
+
3. **Classify** — proceed / ask / simplify
|
|
20
|
+
4. **Severity** — a silent assumption that changes public behavior is a fail
|
|
21
|
+
|
|
22
|
+
## Worked example
|
|
23
|
+
|
|
24
|
+
> **Observe:** user said "just add caching"; repo already has TanStack Query on the same endpoint.
|
|
25
|
+
> **Interpret:** a second cache would duplicate, not simplify.
|
|
26
|
+
> **Classify:** ask, then reuse Query — do not add Redis.
|
|
27
|
+
> **Check:** surgical edit; no new abstraction.
|
|
28
|
+
|
|
29
|
+
## Self-critique before reporting
|
|
30
|
+
|
|
31
|
+
- **Thought first** — confusion was surfaced, not coded through
|
|
32
|
+
- **Simpler option** — no extra layer without a repeating pattern
|
|
33
|
+
- **Surgical** — unrelated files untouched
|
|
34
|
+
- **Right owner** — scoped refactor → `workflow-refactor`; repo-wide pattern → `audit-code-quality`
|
|
35
|
+
|
|
36
|
+
Four guardrails to apply on every non-trivial coding task. Bias toward caution over speed. For trivial one-liners (typo fixes, obvious renames), use judgment — not every change needs full rigor.
|
|
37
|
+
|
|
38
|
+
If a project's own rules contradict any guideline below, the project rules win.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 1. Think Before Coding [HIGH freedom]
|
|
43
|
+
|
|
44
|
+
**State your assumptions. Say when you're confused. Surface tradeoffs.**
|
|
45
|
+
|
|
46
|
+
Before writing code:
|
|
47
|
+
|
|
48
|
+
- State your assumptions explicitly. If uncertain, ask instead of guessing.
|
|
49
|
+
- If multiple interpretations exist, present them — don't silently pick one.
|
|
50
|
+
- If a simpler approach exists than what was requested, say so. Push back when warranted.
|
|
51
|
+
- If something is unclear, stop. Name what's confusing. Ask.
|
|
52
|
+
|
|
53
|
+
**Anti-pattern:** Reading an ambiguous request, picking one interpretation, building 200 lines, then discovering the user meant something else.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 2. Simplicity First [HIGH freedom]
|
|
58
|
+
|
|
59
|
+
**Minimum code that solves the problem. Nothing speculative.**
|
|
60
|
+
|
|
61
|
+
- No features beyond what was asked.
|
|
62
|
+
- No abstractions for single-use code.
|
|
63
|
+
- No "flexibility" or "configurability" that wasn't requested.
|
|
64
|
+
- No error handling for impossible scenarios.
|
|
65
|
+
- No premature `try/catch`, `?.` chains, or `Array.isArray()` guards as the *primary* fix — those are symptom suppressors. Fix the root cause first; harden second.
|
|
66
|
+
- If you wrote 200 lines and it could be 50, rewrite it before showing the user.
|
|
67
|
+
|
|
68
|
+
**The test:** Would a senior engineer reading this say it's overcomplicated? If yes, simplify.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 3. Surgical Changes [HIGH freedom]
|
|
73
|
+
|
|
74
|
+
**Touch only what you must. Clean up only your own mess.**
|
|
75
|
+
|
|
76
|
+
When editing existing code:
|
|
77
|
+
|
|
78
|
+
- Don't "improve" adjacent code, comments, or formatting that's outside the task.
|
|
79
|
+
- Don't refactor things that aren't broken.
|
|
80
|
+
- Match existing style, even if you'd do it differently.
|
|
81
|
+
- If you notice unrelated dead code or smells, **mention them** — don't delete or fix them in the same change.
|
|
82
|
+
- Add tests where the task asks for them or where the repo already keeps that kind of test; scratch scripts and one-off checks stay out of the repo.
|
|
83
|
+
- Edit in place — change the lines the task needs, don't rewrite the file around them.
|
|
84
|
+
|
|
85
|
+
When your changes create orphans:
|
|
86
|
+
|
|
87
|
+
- Remove imports, variables, or functions that *your* changes made unused.
|
|
88
|
+
- Don't remove pre-existing dead code unless explicitly asked.
|
|
89
|
+
|
|
90
|
+
**The test:** Every changed line in the diff should trace directly to the user's request. If a reviewer asks "why is this line different?" you should have an answer rooted in the task.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 4. Goal-Driven Execution [HIGH freedom]
|
|
95
|
+
|
|
96
|
+
**Define success criteria. Loop until verified.**
|
|
97
|
+
|
|
98
|
+
Transform imperative tasks into verifiable goals:
|
|
99
|
+
|
|
100
|
+
| Instead of... | Transform to... |
|
|
101
|
+
|---|---|
|
|
102
|
+
| "Add validation" | "Write tests for invalid inputs, then make them pass" |
|
|
103
|
+
| "Fix the bug" | "Write a test that reproduces it, then make it pass" |
|
|
104
|
+
| "Refactor X" | "Ensure tests pass before and after" |
|
|
105
|
+
| "Make it work" | "Define what 'work' means as a verifiable check, then verify" |
|
|
106
|
+
|
|
107
|
+
For multi-step tasks, say in one line what you are about to do before the first tool call, then list the steps with the check that proves each:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
1. [Step] → verify: [check]
|
|
111
|
+
2. [Step] → verify: [check]
|
|
112
|
+
3. [Step] → verify: [check]
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Strong success criteria let you loop independently. Weak criteria ("make it work") force the user back into the loop to clarify.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Self-Check Before Returning a Result [LOW freedom — do not skip]
|
|
120
|
+
|
|
121
|
+
Before saying "done", confirm:
|
|
122
|
+
|
|
123
|
+
- [ ] Every diff line traces to the user's request (Surgical Changes)
|
|
124
|
+
- [ ] No unrequested features, abstractions, or configurability (Simplicity First)
|
|
125
|
+
- [ ] Assumptions stated, ambiguities surfaced, not silently picked (Think Before Coding)
|
|
126
|
+
- [ ] Success criteria defined and verified — not just "the code compiles" (Goal-Driven Execution)
|
|
127
|
+
- [ ] Adjacent code, comments, and formatting left alone unless touching them was the task
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## When These Guidelines Are Working
|
|
132
|
+
|
|
133
|
+
- Diffs are minimal — no unrelated changes
|
|
134
|
+
- Code is simple the first time — fewer rewrites
|
|
135
|
+
- Clarifying questions appear *before* implementation, not after mistakes
|
|
136
|
+
- PRs feel hand-crafted, not AI-sprawled
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
**Source:** Adapted from [forrestchang/andrej-karpathy-skills](https://github.com/forrestchang/andrej-karpathy-skills), distilled from Andrej Karpathy's observations on LLM coding pitfalls. MIT licensed.
|