@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,274 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-refactor
|
|
3
|
+
description: >
|
|
4
|
+
Scoped, behavior-preserving refactor: map dependencies, change structure,
|
|
5
|
+
run affected tests. Use when "refactor this", "reduce duplication", or
|
|
6
|
+
"improve readability". Dead code → plan-dead-code. Repo-wide smells →
|
|
7
|
+
audit-code-quality.
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Refactor Code Skill
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED.** Structure target `[HIGH freedom]`;
|
|
14
|
+
behavior-preserving checks and affected tests `[LOW freedom — run exactly]`.
|
|
15
|
+
|
|
16
|
+
## How to reason
|
|
17
|
+
|
|
18
|
+
1. **Observe** — current structure, callers, tests
|
|
19
|
+
2. **Interpret** — duplication vs needed variation
|
|
20
|
+
3. **Classify** — extract / inline / rename / stop (behavior would change)
|
|
21
|
+
4. **Severity** — a public API change is not this skill
|
|
22
|
+
|
|
23
|
+
Everything here **preserves behavior**. Removing code is a different
|
|
24
|
+
contract: `plan-dead-code` proves it unreachable and `housekeep-dead-code`
|
|
25
|
+
deletes it against an approved list. Duplication findings arrive here from
|
|
26
|
+
those skills; deletions do not leave from here.
|
|
27
|
+
|
|
28
|
+
## Worked example
|
|
29
|
+
|
|
30
|
+
> **Observe:** three copy-pasted date formatters; tests only cover one.
|
|
31
|
+
> **Interpret:** same behavior, three implementations.
|
|
32
|
+
> **Classify:** extract `formatDate`; add the missing two call-site tests first (red), then extract (green).
|
|
33
|
+
> **Verify:** same output; no new features.
|
|
34
|
+
|
|
35
|
+
## Self-critique before reporting
|
|
36
|
+
|
|
37
|
+
- **Behavior same** — existing tests still pass; no silent product change
|
|
38
|
+
- **Scoped** — not a repo-wide drive-by
|
|
39
|
+
- **Tests first** — missing coverage added before the move when needed
|
|
40
|
+
- **Right owner** — repo-wide anti-pattern → `audit-code-quality`; mechanical rename → `burndown-full`
|
|
41
|
+
|
|
42
|
+
Improve code quality without changing external behavior. Research-aware.
|
|
43
|
+
|
|
44
|
+
## Pre-refactoring checks [LOW freedom — run exactly]
|
|
45
|
+
|
|
46
|
+
**Before refactoring any code:**
|
|
47
|
+
|
|
48
|
+
### 1. Read Relevant Documentation
|
|
49
|
+
```
|
|
50
|
+
README.md (project overview)
|
|
51
|
+
src/[domain]/@_[domain]-README.md (domain architecture)
|
|
52
|
+
CONTRIBUTING.md (code standards)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 2. Understand Existing Patterns
|
|
56
|
+
|
|
57
|
+
Use `Grep` and `SemanticSearch` to find:
|
|
58
|
+
- How similar code is structured elsewhere in the codebase
|
|
59
|
+
- What patterns are already established
|
|
60
|
+
- Every file that imports or depends on the code being refactored
|
|
61
|
+
|
|
62
|
+
### 3. Map the Blast Radius
|
|
63
|
+
|
|
64
|
+
Before changing any function, class, or component:
|
|
65
|
+
```bash
|
|
66
|
+
rg "functionName" --type ts # find all callers
|
|
67
|
+
rg "import.*from.*module" --type ts # find all importers
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
List every file that will be affected by the change.
|
|
71
|
+
|
|
72
|
+
### 4. Research Modern Patterns (for non-trivial refactors)
|
|
73
|
+
|
|
74
|
+
If the refactoring introduces a new pattern, verify it's current best practice:
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
firecrawl:firecrawl_search
|
|
78
|
+
{
|
|
79
|
+
"query": "<framework> <pattern> best practice <current year>",
|
|
80
|
+
"limit": 5,
|
|
81
|
+
"sources": [{ "type": "web" }]
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Scrape the most authoritative result:
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
firecrawl:firecrawl_scrape
|
|
89
|
+
{
|
|
90
|
+
"url": "<best-result-url>",
|
|
91
|
+
"formats": ["markdown"],
|
|
92
|
+
"onlyMainContent": true
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
This prevents refactoring FROM one outdated pattern TO another outdated pattern.
|
|
97
|
+
|
|
98
|
+
### 5. Verification Statement
|
|
99
|
+
|
|
100
|
+
Before refactoring, state:
|
|
101
|
+
```
|
|
102
|
+
"Pre-refactoring check:
|
|
103
|
+
- README/docs read: [list]
|
|
104
|
+
- Dependent files identified: [list files that import this code]
|
|
105
|
+
- Blast radius: [N files affected]
|
|
106
|
+
- Tests exist: [YES/NO — if NO, write tests first]
|
|
107
|
+
- Pattern verified: [YES via research / YES matches codebase / SKIP — trivial refactor]"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Refactoring Principles [HIGH freedom]
|
|
113
|
+
|
|
114
|
+
1. **Behavior stays the same** — tests pass before and after
|
|
115
|
+
2. **Small steps** — one change at a time, verify after each
|
|
116
|
+
3. **Test frequently** — run tests after each change
|
|
117
|
+
4. **Commit often** — easy to revert if something breaks
|
|
118
|
+
5. **Research first** — don't replace old patterns with other old patterns
|
|
119
|
+
6. **Scope holds** — a smell outside the named target is a note in the report, not part of this refactor; a bug you find is a follow-up. Tests added here cover the seam being moved or match what the repo already keeps; scratch checks stay out of the repo. Move code in place rather than rewriting whole files.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Code Smells and Fixes [HIGH freedom]
|
|
124
|
+
|
|
125
|
+
| Smell | Symptom | Solution |
|
|
126
|
+
|-------|---------|----------|
|
|
127
|
+
| **Long Function** | >20 lines, does multiple things | Extract functions |
|
|
128
|
+
| **Duplicate Code** | Same logic in 2+ places | Extract shared function/hook |
|
|
129
|
+
| **Magic Numbers** | Unexplained literals | Named constants or config |
|
|
130
|
+
| **Deep Nesting** | 3+ levels of if/loops | Early returns, extract functions |
|
|
131
|
+
| **Long Parameter List** | >3 parameters | Object parameter with interface |
|
|
132
|
+
| **Feature Envy** | Function uses another module's data heavily | Move function to that module |
|
|
133
|
+
| **God Object** | One class/component does everything | Split by responsibility |
|
|
134
|
+
| **Primitive Obsession** | Using strings/numbers where a type would be safer | Create domain types |
|
|
135
|
+
| **Shotgun Surgery** | One change requires editing many files | Consolidate related logic |
|
|
136
|
+
| **Dead Code** | Unreachable or unused code | Not this skill — proving it dead is `plan-dead-code`, deleting it is `housekeep-dead-code`. Note it and move on |
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Common Refactorings [HIGH freedom]
|
|
141
|
+
|
|
142
|
+
### Extract Function
|
|
143
|
+
|
|
144
|
+
**Before:**
|
|
145
|
+
```typescript
|
|
146
|
+
function processOrder(order: Order) {
|
|
147
|
+
if (!order.items.length) throw new Error('Empty order');
|
|
148
|
+
if (!order.customer) throw new Error('No customer');
|
|
149
|
+
if (order.total < 0) throw new Error('Invalid total');
|
|
150
|
+
|
|
151
|
+
const subtotal = order.items.reduce((sum, i) => sum + i.price, 0);
|
|
152
|
+
const tax = subtotal * 0.1;
|
|
153
|
+
const total = subtotal + tax;
|
|
154
|
+
|
|
155
|
+
db.orders.insert({ ...order, total });
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**After:**
|
|
160
|
+
```typescript
|
|
161
|
+
function processOrder(order: Order) {
|
|
162
|
+
validateOrder(order);
|
|
163
|
+
const total = calculateTotal(order);
|
|
164
|
+
saveOrder({ ...order, total });
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Flatten Nested Conditionals
|
|
169
|
+
|
|
170
|
+
**Before:**
|
|
171
|
+
```typescript
|
|
172
|
+
function getDiscount(user: User, order: Order) {
|
|
173
|
+
if (user) {
|
|
174
|
+
if (user.isPremium) {
|
|
175
|
+
if (order.total > 100) {
|
|
176
|
+
return 0.2;
|
|
177
|
+
} else {
|
|
178
|
+
return 0.1;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return 0;
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**After:**
|
|
187
|
+
```typescript
|
|
188
|
+
function getDiscount(user: User | null, order: Order) {
|
|
189
|
+
if (!user) return 0;
|
|
190
|
+
if (user.isPremium && order.total > 100) return 0.2;
|
|
191
|
+
if (user.isPremium) return 0.1;
|
|
192
|
+
return 0;
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Replace Magic Numbers
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
// Before
|
|
200
|
+
if (password.length < 8) { ... }
|
|
201
|
+
if (retries > 3) { ... }
|
|
202
|
+
const tax = amount * 0.1;
|
|
203
|
+
|
|
204
|
+
// After
|
|
205
|
+
const MIN_PASSWORD_LENGTH = 8;
|
|
206
|
+
const MAX_RETRIES = 3;
|
|
207
|
+
const TAX_RATE = 0.1;
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Use Object Parameters
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
// Before — positional args are error-prone
|
|
214
|
+
function createUser(name: string, email: string, age: number, role: string) { ... }
|
|
215
|
+
|
|
216
|
+
// After — named, self-documenting, extensible
|
|
217
|
+
interface CreateUserParams {
|
|
218
|
+
name: string;
|
|
219
|
+
email: string;
|
|
220
|
+
age: number;
|
|
221
|
+
role: string;
|
|
222
|
+
}
|
|
223
|
+
function createUser(params: CreateUserParams) { ... }
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Refactoring Process [LOW freedom — run exactly]
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
1. Verify tests pass → 2. Make one small change → 3. Verify tests pass → 4. Commit → 5. Repeat
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Commit Message Format
|
|
235
|
+
```
|
|
236
|
+
refactor(scope): description of structural change
|
|
237
|
+
|
|
238
|
+
- What was changed and why
|
|
239
|
+
- No behavior change
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Refactoring Checklist [LOW freedom — do not skip]
|
|
245
|
+
|
|
246
|
+
### Before Starting
|
|
247
|
+
- [ ] Tests pass (if no tests, write them first)
|
|
248
|
+
- [ ] Understand current behavior
|
|
249
|
+
- [ ] All dependent files identified
|
|
250
|
+
- [ ] Pattern researched (if introducing new pattern)
|
|
251
|
+
- [ ] Specific smell identified
|
|
252
|
+
|
|
253
|
+
### During Refactoring
|
|
254
|
+
- [ ] One change at a time
|
|
255
|
+
- [ ] Tests run after each change
|
|
256
|
+
- [ ] Working states committed
|
|
257
|
+
|
|
258
|
+
### After Refactoring
|
|
259
|
+
- [ ] All tests still pass
|
|
260
|
+
- [ ] Code is more readable
|
|
261
|
+
- [ ] No behavior changes
|
|
262
|
+
- [ ] Performance not degraded
|
|
263
|
+
- [ ] All dependent files updated
|
|
264
|
+
- [ ] Types still correct (no new `any` or casts)
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## When NOT to Refactor [LOW freedom — do not skip]
|
|
269
|
+
|
|
270
|
+
- No test coverage (write tests first)
|
|
271
|
+
- Don't understand the code yet (read and learn first)
|
|
272
|
+
- Code is being deleted soon
|
|
273
|
+
- The refactoring has no clear benefit
|
|
274
|
+
- Under deadline pressure (ship first, refactor in a follow-up)
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-release-prep
|
|
3
|
+
description: >
|
|
4
|
+
Take the local working tree to a merge-ready PR against main: review, split
|
|
5
|
+
if needed, commit, push, open the PR, drive CI green; never merge. Use when
|
|
6
|
+
"prepare this for a PR" or "get my working tree merge-ready". Existing PR →
|
|
7
|
+
workflow-pr.
|
|
8
|
+
license: MIT
|
|
9
|
+
effort: high
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# workflow-release-prep — Local working tree → merge-ready PR
|
|
13
|
+
|
|
14
|
+
**Degree of freedom: MIXED.**
|
|
15
|
+
|
|
16
|
+
- Review & readiness (Phases 1–2): **HIGH freedom** — judge whether the
|
|
17
|
+
change is coherent and safe.
|
|
18
|
+
- Git operations (Phases 0, 3–5): **LOW freedom** — commit / push / PR
|
|
19
|
+
mechanics run exactly, in order. A wrong branch or a force-push is
|
|
20
|
+
real damage.
|
|
21
|
+
|
|
22
|
+
Apply-now, end to end. Take everything in the **local working tree** —
|
|
23
|
+
uncommitted + staged + untracked + unpushed commits, reviewed together as
|
|
24
|
+
one release unit — and drive it to a merge-ready PR against main.
|
|
25
|
+
**Do not merge.** This orchestrates existing skills rather than
|
|
26
|
+
re-implementing them: hand deep passes to the specialists, own the
|
|
27
|
+
sequence and the go/no-go.
|
|
28
|
+
|
|
29
|
+
Scope is the **local working tree only** — not open PRs, not
|
|
30
|
+
merged-unreleased work. One developer's pending change, prepared properly.
|
|
31
|
+
|
|
32
|
+
## This skill vs neighbors
|
|
33
|
+
|
|
34
|
+
| Skill | Owns |
|
|
35
|
+
|---|---|
|
|
36
|
+
| **workflow-release-prep** (this) | Whole dirty tree → merge-ready PR; sequence + verdict |
|
|
37
|
+
| `workflow-pr` | Lifecycle of an **already-committed** / existing PR, including merge |
|
|
38
|
+
| `workflow-launch-ready` | Product launch sweep (SEO / PWA / i18n), not git prep |
|
|
39
|
+
| `workflow-quality-gate` | Pre-release *quality* sweep; does not commit or open a PR |
|
|
40
|
+
| `workflow-git-commit` | Conventional commit messages only |
|
|
41
|
+
| `audit-code-review` | Quality / security / maintainability of a named diff |
|
|
42
|
+
| `split-to-prs` (Cursor extra) | Slice one pile into reviewable PRs — wait for approval |
|
|
43
|
+
| `babysit` (Cursor extra) | Keep an **open** PR green (comments / conflicts / CI) |
|
|
44
|
+
| `housekeep-backlog` | What's *not* done across the repo |
|
|
45
|
+
| `docs-adr` | Decisions made along the way |
|
|
46
|
+
|
|
47
|
+
Pre-release trio: `housekeep-backlog` (what's parked) → this skill
|
|
48
|
+
(what's done, onto a PR) → `docs-adr` (decisions).
|
|
49
|
+
|
|
50
|
+
## How to reason
|
|
51
|
+
|
|
52
|
+
1. **Observe** — unstaged + staged + untracked + unpushed as one unit
|
|
53
|
+
2. **Interpret** — one reviewable concern, or several tangled together?
|
|
54
|
+
3. **Classify** — GO / SPLIT / BLOCKED
|
|
55
|
+
4. **Severity** — a secret or broken test blocks; formatting churn does not
|
|
56
|
+
|
|
57
|
+
## Worked example
|
|
58
|
+
|
|
59
|
+
> **Observe:** feature + leftover `console.log` + an unrelated lockfile bump.
|
|
60
|
+
> **Interpret:** two concerns; debug residue is a completeness fail.
|
|
61
|
+
> **Classify:** SPLIT the lockfile; remove the log; then GO.
|
|
62
|
+
> **Gate:** do not open a PR around the leftover debug print.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Phase 0 — Snapshot the working tree [LOW freedom — run exactly]
|
|
67
|
+
|
|
68
|
+
Establish what's pending before touching anything:
|
|
69
|
+
|
|
70
|
+
- `git status` and `git branch --show-current` — confirm you are **not**
|
|
71
|
+
on `main` / `master`. If you are, stop and create a feature branch
|
|
72
|
+
first. Committing release prep straight to main is the failure this
|
|
73
|
+
guards.
|
|
74
|
+
- `git diff` (unstaged) + `git diff --staged` — the complete change set,
|
|
75
|
+
reviewed as one.
|
|
76
|
+
- `git log origin/main..HEAD --oneline` (fall back to `origin/master` if
|
|
77
|
+
that is the default) — already-committed, unpushed work on this branch
|
|
78
|
+
is part of the release unit.
|
|
79
|
+
- `git status --porcelain` — untracked files are easy to forget to add.
|
|
80
|
+
|
|
81
|
+
State the full pending scope: modified, staged, unstaged, untracked, and
|
|
82
|
+
unpushed-committed. That aggregate is what gets reviewed.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Phase 1 — Review the whole change together [HIGH freedom]
|
|
87
|
+
|
|
88
|
+
Read **`audit-code-review`** and run it on the **aggregate** diff. Do not
|
|
89
|
+
duplicate its quality / security / maintainability logic.
|
|
90
|
+
|
|
91
|
+
Then add the release lens a single-diff review misses:
|
|
92
|
+
|
|
93
|
+
- **Coherence** — one logical unit, or several unrelated ones tangled
|
|
94
|
+
together? If several → Phase 2 splits them.
|
|
95
|
+
- **Completeness** — half-finished work about to ship? Cross-check the
|
|
96
|
+
markers `housekeep-backlog` / `plan-stub-checker` hunt: new
|
|
97
|
+
`TODO` / `FIXME`, `console.log` / debug prints, commented-out code,
|
|
98
|
+
`.skip`ed tests, stubbed handlers. Release prep is when these must not
|
|
99
|
+
slip through.
|
|
100
|
+
- **Accidental inclusions** — secrets or keys (→ `plan-secrets-audit` if
|
|
101
|
+
suspected; **never commit them**), `.env` files, large binaries,
|
|
102
|
+
editor / OS cruft, debug config, unrelated formatting churn.
|
|
103
|
+
- **Migration / flag safety** — if the diff touches schema or flags, is
|
|
104
|
+
it backward-compatible for the deploy window? Unsure →
|
|
105
|
+
`plan-data-integrity` / `workflow-feature-flag`.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Phase 2 — Reason about readiness, then decide split [HIGH freedom]
|
|
110
|
+
|
|
111
|
+
Run this chain before proceeding:
|
|
112
|
+
|
|
113
|
+
1. **Observe** — what does the aggregate contain, across how many concerns?
|
|
114
|
+
2. **Interpret** — one reviewable PR, or unrelated changes a reviewer
|
|
115
|
+
cannot evaluate together?
|
|
116
|
+
3. **Decide** — single PR, or split? If it spans multiple unrelated
|
|
117
|
+
concerns or is large enough to be unreviewable, hand to
|
|
118
|
+
**`split-to-prs`** and prepare each separately. A 2000-line PR mixing
|
|
119
|
+
a feature, a refactor, and a dependency bump is three PRs.
|
|
120
|
+
4. **Gate** — is anything blocking release (secret, broken test,
|
|
121
|
+
half-finished feature)? If yes, surface it and **stop before
|
|
122
|
+
committing** — do not prepare a PR around a known problem.
|
|
123
|
+
|
|
124
|
+
## Self-critique before committing [LOW freedom — do not skip]
|
|
125
|
+
|
|
126
|
+
Challenge the change against this rubric. If any item fails, fix or
|
|
127
|
+
surface it before Phase 3:
|
|
128
|
+
|
|
129
|
+
- **Complete** — nothing half-implemented, no debug residue, no
|
|
130
|
+
stubbed-and-forgotten path.
|
|
131
|
+
- **Clean** — no secrets, no accidental files, no unrelated churn
|
|
132
|
+
padding the diff.
|
|
133
|
+
- **Coherent** — one logical unit per PR (or split decided).
|
|
134
|
+
- **Tested** — the change is covered, or the coverage gap is named
|
|
135
|
+
(→ `plan-test-coverage`). Existing tests are not broken.
|
|
136
|
+
- **Safe** — migrations backward-compatible; flags default off; no
|
|
137
|
+
breaking API change to a live consumer without a note.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Phase 3 — Commit [LOW freedom — run exactly]
|
|
142
|
+
|
|
143
|
+
Stage deliberately (`git add` the intended files — not blanket
|
|
144
|
+
`git add .` if untracked cruft exists). Hand message-writing to
|
|
145
|
+
**`workflow-git-commit`** for conventional-commit format. One commit per
|
|
146
|
+
logical change; a split PR set gets its own commits per PR. Never bundle
|
|
147
|
+
unrelated changes in one commit.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Phase 4 — Push & open the PR [LOW freedom — run exactly]
|
|
152
|
+
|
|
153
|
+
- Push the feature branch (`git push -u origin <branch>`). Never
|
|
154
|
+
force-push a shared branch.
|
|
155
|
+
- Open the PR against main via **`workflow-pr`**, with a complete
|
|
156
|
+
description: what changed and why, how it was tested, any migration /
|
|
157
|
+
flag / rollout notes, and links to the relevant `docs-adr` or `BL-`
|
|
158
|
+
backlog items if this closes them. A reviewer should not have to
|
|
159
|
+
reverse-engineer intent.
|
|
160
|
+
- Confirm the repo's aggregator / required checks fire on the PR
|
|
161
|
+
(`housekeep-gates` / `workflow-quality-gate` if those exist here).
|
|
162
|
+
This skill does not run those sweeps; it makes sure they are wired
|
|
163
|
+
to fire.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Phase 5 — Drive to merge-ready [LOW freedom — hand off]
|
|
168
|
+
|
|
169
|
+
Hand to **`babysit`** to keep the PR merge-ready: address bot / review
|
|
170
|
+
feedback, resolve straightforward conflicts, fix red CI, loop until
|
|
171
|
+
green and reviewed. **Stop at merge-ready — do not merge.** The human
|
|
172
|
+
(or a separate release step) makes the merge call. This job ends at
|
|
173
|
+
"green, reviewed, and waiting for the button."
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Definition of Done
|
|
178
|
+
|
|
179
|
+
- [ ] Working tree snapshotted; confirmed on a feature branch, not main
|
|
180
|
+
- [ ] Full pending scope (unstaged + staged + untracked + unpushed)
|
|
181
|
+
reviewed as one unit via `audit-code-review`
|
|
182
|
+
- [ ] Release-lens checks done: coherence, completeness, no debug / stub
|
|
183
|
+
residue, no accidental inclusions, migration / flag safety
|
|
184
|
+
- [ ] Self-critique rubric passed (complete / clean / coherent / tested /
|
|
185
|
+
safe); blockers surfaced, not papered over
|
|
186
|
+
- [ ] Split decision made; multi-concern work routed to `split-to-prs`
|
|
187
|
+
- [ ] Committed via `workflow-git-commit` (conventional, one logical
|
|
188
|
+
unit per commit)
|
|
189
|
+
- [ ] Pushed to a feature branch (no force-push); PR opened via
|
|
190
|
+
`workflow-pr` with a complete description
|
|
191
|
+
- [ ] Aggregator / required checks confirmed firing on the PR
|
|
192
|
+
- [ ] Driven to merge-ready via `babysit`; **not** merged
|
|
193
|
+
|
|
194
|
+
## Output format
|
|
195
|
+
|
|
196
|
+
1. **Pending scope** — files by state; what's included
|
|
197
|
+
2. **Review summary** — `audit-code-review` findings + release-lens
|
|
198
|
+
findings, severity-ordered
|
|
199
|
+
3. **Readiness verdict** — GO / SPLIT / BLOCKED, with the self-critique
|
|
200
|
+
rubric result
|
|
201
|
+
4. **Actions taken** — commits made, branch pushed, PR link
|
|
202
|
+
5. **Merge-ready status** — CI state, outstanding review items, what
|
|
203
|
+
remains before the human merges
|
|
204
|
+
|
|
205
|
+
Stop at merge-ready. Handoffs: `audit-code-review`, `split-to-prs`,
|
|
206
|
+
`workflow-git-commit`, `workflow-pr`, `babysit`, `plan-secrets-audit`
|
|
207
|
+
(if secrets suspected).
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-ship-and-observe
|
|
3
|
+
description: >
|
|
4
|
+
Take merged, green code to a verified, monitored production release. Use
|
|
5
|
+
when "ship it", "deploy to production", "release this", "go live", "roll
|
|
6
|
+
this out", "promote to prod", or "cut a release" for a running app (npm
|
|
7
|
+
packages → deploy-npm).
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# workflow-ship-and-observe — Release, Verify, Observe, Roll Back
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED.** Rollback-vs-hotfix `[HIGH freedom]`; pin
|
|
14
|
+
target/SHA, prove revision, observe window `[LOW freedom — run exactly]`.
|
|
15
|
+
|
|
16
|
+
Shipping is not merging. A release is done only when the **intended revision is
|
|
17
|
+
live on the confirmed target, production smoke checks pass, and a defined
|
|
18
|
+
monitoring window elapses without crossing rollback thresholds** — or a
|
|
19
|
+
rollback/hotfix has been executed.
|
|
20
|
+
|
|
21
|
+
> **Prove the deployed revision, then watch it.** A 200 from a URL is not proof
|
|
22
|
+
> that your code is live, and "it deployed" is not proof that it is healthy.
|
|
23
|
+
|
|
24
|
+
**Before any browser action, read `protocol-browser-anti-stall`.**
|
|
25
|
+
|
|
26
|
+
## How to reason
|
|
27
|
+
|
|
28
|
+
1. **Pin** — SHA, environment, mechanism, rollback, signals
|
|
29
|
+
2. **Ship** — pipeline deploy; backend deps first
|
|
30
|
+
3. **Prove** — live revision equals SHA; smoke on critical flows
|
|
31
|
+
4. **Watch** — window elapsed under thresholds, or roll back
|
|
32
|
+
|
|
33
|
+
## Worked example
|
|
34
|
+
|
|
35
|
+
> **Pin:** `a1b2c3d` on Vercel production; rollback = previous promotion; Sentry + 5xx threshold set.
|
|
36
|
+
> **Ship:** migrations applied; `vercel deploy --prod` succeeded.
|
|
37
|
+
> **Prove:** `/version` returns `a1b2c3d`; checkout + login smoke 2xx.
|
|
38
|
+
> **Watch:** 2h window, error rate flat → STABLE. A 5xx spike would have promoted previous and re-smoked.
|
|
39
|
+
|
|
40
|
+
## Self-critique before reporting
|
|
41
|
+
|
|
42
|
+
- **Revision proven** — a 200 is not "our SHA is live"
|
|
43
|
+
- **Level honest** — deployed-verified ≠ observed-stable
|
|
44
|
+
- **Threshold acted** — known-bad prod was not "monitored more"
|
|
45
|
+
- **Right owner** — smoke methodology only → `deploy-verify`; npm package → `deploy-npm`; not-yet-green → `workflow-green-repo`
|
|
46
|
+
|
|
47
|
+
## Phase 0 — Pin the target and the revision [LOW freedom — run exactly]
|
|
48
|
+
|
|
49
|
+
Never guess where or what you are shipping. Establish:
|
|
50
|
+
|
|
51
|
+
1. **Source revision** — the exact commit SHA to release. Confirm it is merged
|
|
52
|
+
and that the repository is green (route to `workflow-green-repo` /
|
|
53
|
+
`complete-everything` if not). Record the SHA.
|
|
54
|
+
2. **Target environment** — which environment and provider. Discover from the
|
|
55
|
+
repo, do not assume: `vercel.json`, `netlify.toml`, `fly.toml`,
|
|
56
|
+
`Dockerfile`, `render.yaml`, Kubernetes manifests, GitHub Actions deploy
|
|
57
|
+
workflows, `app.json`/EAS, `supabase/config.toml`, Terraform. Confirm the
|
|
58
|
+
environment (staging vs production) with the user once and reuse it.
|
|
59
|
+
3. **Deploy mechanism** — CI-on-merge, a manual pipeline trigger, or a CLI
|
|
60
|
+
command. Identify the exact command/workflow and how to read its status.
|
|
61
|
+
4. **Backend dependencies** — migrations, edge functions, RLS, buckets,
|
|
62
|
+
secrets, cron. Per `full-stack-ship-discipline`, these must deploy and be
|
|
63
|
+
verified alongside the frontend. Non-destructive schema required by the
|
|
64
|
+
approved release ships without re-asking on a confirmed target; destructive
|
|
65
|
+
data operations always ask first.
|
|
66
|
+
5. **Rollback plan** — the concrete, executable way to revert this target
|
|
67
|
+
(previous deployment promotion, image/tag rollback, revert-and-redeploy,
|
|
68
|
+
migration down-path). If no rollback exists, say so before shipping.
|
|
69
|
+
6. **Signals** — where errors and latency are observed (Sentry, provider logs,
|
|
70
|
+
Supabase logs/advisors, uptime checks) and the thresholds that mean "roll
|
|
71
|
+
back."
|
|
72
|
+
|
|
73
|
+
Write `.cursor/ship-state.md`:
|
|
74
|
+
|
|
75
|
+
```md
|
|
76
|
+
# Ship & Observe: <app> → <environment>
|
|
77
|
+
Revision: <sha>
|
|
78
|
+
Target/provider: <name>
|
|
79
|
+
Deploy: <command/workflow>
|
|
80
|
+
Rollback: <exact procedure>
|
|
81
|
+
Monitor window: <duration> · thresholds: <error rate / latency / crash-free>
|
|
82
|
+
|
|
83
|
+
## Steps
|
|
84
|
+
- [ ] preflight: repo green + revision confirmed
|
|
85
|
+
- [ ] backend deps deployed + verified
|
|
86
|
+
- [ ] deploy triggered
|
|
87
|
+
- [ ] deployed revision matches <sha>
|
|
88
|
+
- [ ] production smoke: <critical flows>
|
|
89
|
+
- [ ] monitoring window elapsed within thresholds
|
|
90
|
+
- [ ] stable OR rollback/hotfix executed
|
|
91
|
+
|
|
92
|
+
## Evidence
|
|
93
|
+
- <step>: <command/result>
|
|
94
|
+
```
|
|
95
|
+
The state file is the source of truth across context compaction and across the monitoring window; re-read it before each phase and before any claim.
|
|
96
|
+
|
|
97
|
+
## Phase 1 — Preflight [LOW freedom — run exactly]
|
|
98
|
+
|
|
99
|
+
- Confirm the release SHA is merged and green. Do not ship red or unmerged code.
|
|
100
|
+
- Deploy and verify backend dependencies first, so the frontend does not hit a
|
|
101
|
+
missing table/function on first request. Verify objects exist as the role the
|
|
102
|
+
client uses.
|
|
103
|
+
- Confirm the rollback procedure is real and, where possible, dry-run it.
|
|
104
|
+
|
|
105
|
+
## Phase 2 — Deploy [LOW freedom — run exactly]
|
|
106
|
+
|
|
107
|
+
- Trigger the deploy via the identified mechanism. Never hand-edit production
|
|
108
|
+
state outside the pipeline.
|
|
109
|
+
- Wait for the deploy to reach a terminal state; capture the build/deploy logs.
|
|
110
|
+
A failed or partial deploy is a stop-and-fix, not a proceed.
|
|
111
|
+
|
|
112
|
+
## Phase 3 — Verify the revision is live [LOW freedom — run exactly]
|
|
113
|
+
|
|
114
|
+
- Confirm the **deployed revision equals the intended SHA** — via the
|
|
115
|
+
provider's deployment metadata, a `/version`/build-id endpoint, a build stamp,
|
|
116
|
+
or asset hashes. A reachable URL alone is not proof.
|
|
117
|
+
- Run production smoke checks on the critical flows: real navigation, auth,
|
|
118
|
+
a primary read and a primary write path. Capture console, network (2xx where
|
|
119
|
+
expected), and screenshots as evidence. Keep artifacts under `.playwright-mcp/`.
|
|
120
|
+
|
|
121
|
+
## Phase 4 — Observe the stability window [LOW freedom — run exactly]
|
|
122
|
+
|
|
123
|
+
- Watch the defined signals for the agreed window (scale it to release risk).
|
|
124
|
+
- Track error rate/new issues (Sentry), latency and 5xx (provider/Supabase
|
|
125
|
+
logs), new ERROR advisors, and crash-free rate for mobile.
|
|
126
|
+
- **Crossing a threshold triggers Phase 5.** Not crossing it after the window
|
|
127
|
+
elapses is the only path to a "stable" claim.
|
|
128
|
+
|
|
129
|
+
## Phase 5 — Roll back or hotfix (only if a threshold is crossed) [HIGH freedom]
|
|
130
|
+
|
|
131
|
+
- If signals breach thresholds: execute the rollback procedure immediately,
|
|
132
|
+
confirm the prior healthy revision is live, and re-verify smoke checks.
|
|
133
|
+
- If forward-fix is clearly faster and safer than rollback, ship a hotfix
|
|
134
|
+
through the same pipeline and re-enter Phase 3. Record the decision and why.
|
|
135
|
+
- Never leave production in a known-bad state to "monitor more."
|
|
136
|
+
|
|
137
|
+
## Phase 6 — Report [LOW freedom — do not skip]
|
|
138
|
+
|
|
139
|
+
```md
|
|
140
|
+
## Ship & Observe — report
|
|
141
|
+
Released: <sha> → <environment/provider>
|
|
142
|
+
### Result: STABLE | ROLLED BACK | HOTFIXED | BLOCKED
|
|
143
|
+
### Evidence
|
|
144
|
+
- deploy: <log/status>
|
|
145
|
+
- revision live: <how confirmed> = <sha>
|
|
146
|
+
- smoke: <flows> → <result + artifacts>
|
|
147
|
+
- monitoring: <window> → error rate <x>, latency <y>, crash-free <z>
|
|
148
|
+
### Rollback/hotfix (if any)
|
|
149
|
+
- trigger: <threshold crossed> → action: <what ran> → outcome
|
|
150
|
+
### Follow-ups
|
|
151
|
+
- none | <tracked item>
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Completion level is **deployed-verified** after Phase 3 and **observed-stable**
|
|
155
|
+
only after Phase 4 passes. Do not claim stability from a single smoke test.
|
|
156
|
+
|
|
157
|
+
## Related
|
|
158
|
+
|
|
159
|
+
- `deploy-verify` — the post-deploy smoke methodology this skill builds on
|
|
160
|
+
- `deploy-npm` — for npm package releases (not app deployments)
|
|
161
|
+
- `full-stack-ship-discipline` — backend must deploy and be verified too
|
|
162
|
+
- `iterate-post-launch` — turn observed production signals into the next fixes
|
|
163
|
+
- `workflow-feedback-to-closure` — route rollback/incident findings into tickets
|
|
164
|
+
- `verification-before-completion` — deployed-verified vs observed-stable levels
|