@kensaurus/skills 0.0.0-stage → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +53 -0
- package/.claude-plugin/plugin.json +40 -0
- package/.cursor-plugin/plugin.json +38 -0
- package/.mcp.json +28 -0
- package/CHANGELOG.md +1790 -0
- package/LICENSE +21 -0
- package/LICENSE-APACHE +62 -0
- package/NOTICE +13 -0
- package/README.md +821 -2
- package/SECURITY.md +55 -0
- package/agents/code-reviewer.md +60 -0
- package/agents/completion-judge.md +89 -0
- package/agents/db-migrator.md +125 -0
- package/agents/debugger.md +47 -0
- package/agents/deploy-checker.md +100 -0
- package/agents/perf-monitor.md +74 -0
- package/assets/favicon.png +0 -0
- package/assets/logo-light.png +0 -0
- package/assets/logo.png +0 -0
- package/assets/logo.svg +6 -0
- package/assets/og.png +0 -0
- package/bin/install.mjs +1127 -0
- package/bin/kenji.js +2 -0
- package/commands/adr.md +17 -0
- package/commands/aeo-plan.md +18 -0
- package/commands/arch-boundaries.md +17 -0
- package/commands/aso-plan.md +18 -0
- package/commands/auth-flows.md +19 -0
- package/commands/backup-plan.md +17 -0
- package/commands/burndown-full.md +25 -0
- package/commands/capacitor-plan.md +18 -0
- package/commands/codemod-safety.md +22 -0
- package/commands/commit.md +18 -0
- package/commands/complete-everything.md +40 -0
- package/commands/cost-plan.md +19 -0
- package/commands/deadcode-plan.md +26 -0
- package/commands/deadcode.md +32 -0
- package/commands/debug-issue.md +17 -0
- package/commands/deps-plan.md +18 -0
- package/commands/docs-plan.md +17 -0
- package/commands/doctrine.md +19 -0
- package/commands/error-plan.md +19 -0
- package/commands/feedback-to-closure.md +36 -0
- package/commands/fix-issue.md +76 -0
- package/commands/gate-logic.md +26 -0
- package/commands/green-repo.md +36 -0
- package/commands/grill-me.md +19 -0
- package/commands/gtm-plan.md +21 -0
- package/commands/gtm-weekly.md +17 -0
- package/commands/gtm.md +22 -0
- package/commands/handoff.md +15 -0
- package/commands/housekeep-backlog.md +18 -0
- package/commands/housekeep-files.md +22 -0
- package/commands/housekeep-gates.md +18 -0
- package/commands/instant-nav.md +11 -0
- package/commands/integrity-plan.md +19 -0
- package/commands/launch-kit.md +16 -0
- package/commands/mcp-guide.md +40 -0
- package/commands/mobile-plan.md +19 -0
- package/commands/native-rn-monorepo/README.md +78 -0
- package/commands/native-rn-monorepo/android-build.md +26 -0
- package/commands/native-rn-monorepo/android-install.md +32 -0
- package/commands/native-rn-monorepo/android-logcat.md +37 -0
- package/commands/native-rn-monorepo/ios-ci-logs.md +56 -0
- package/commands/native-rn-monorepo/ios-ci-status.md +52 -0
- package/commands/native-rn-monorepo/ios-ci-trigger.md +59 -0
- package/commands/native-rn-monorepo/rn-reset.md +50 -0
- package/commands/native-rn-monorepo/rn-ship-ios.md +67 -0
- package/commands/native-rn-monorepo/rn-verify.md +53 -0
- package/commands/perf-plan.md +18 -0
- package/commands/plan-mode.md +74 -0
- package/commands/pr.md +16 -0
- package/commands/pricing-plan.md +20 -0
- package/commands/privacy-plan.md +18 -0
- package/commands/readability.md +12 -0
- package/commands/readme.md +15 -0
- package/commands/refactor.md +15 -0
- package/commands/release-prep.md +17 -0
- package/commands/research.md +25 -0
- package/commands/responsive-audit.md +21 -0
- package/commands/review-code.md +18 -0
- package/commands/rls-plan.md +18 -0
- package/commands/secrets-plan.md +18 -0
- package/commands/security-plan.md +19 -0
- package/commands/ship-and-observe.md +36 -0
- package/commands/skill-conflicts.md +19 -0
- package/commands/slop-plan.md +18 -0
- package/commands/stub-plan.md +18 -0
- package/commands/test-mutation.md +16 -0
- package/commands/test-plan.md +17 -0
- package/commands/test.md +29 -0
- package/commands/thirdparty-web-interface-guidelines.md +185 -0
- package/commands/uiux-plan.md +18 -0
- package/commands/uiux.md +45 -0
- package/commands/update-deps.md +21 -0
- package/commands/validation-plan.md +19 -0
- package/commands-portable/fix-issue.md +72 -0
- package/commands-portable/plan-mode.md +92 -0
- package/commands-portable/research.md +91 -0
- package/docs/screenshots/README.md +5 -0
- package/docs/screenshots/audit-dark.png +0 -0
- package/docs/screenshots/build-dark.png +0 -0
- package/docs/screenshots/grill-dark.png +0 -0
- package/docs/screenshots/hero-dark.png +0 -0
- package/docs/screenshots/hero-light.png +0 -0
- package/docs/screenshots/ship-dark.png +0 -0
- package/docs/screenshots/src/showcase.html +320 -0
- package/hooks/completion-gate.mjs +258 -0
- package/hooks/cursor-hooks.json +13 -0
- package/hooks/hooks.json +15 -0
- package/install.sh +21 -0
- package/llms.txt +40 -0
- package/mcp/README.md +266 -0
- package/mcp/VERSIONS.md +41 -0
- package/mcp/mcp-full.json.template +124 -0
- package/mcp/mcp.json.template +29 -0
- package/mcp/pinned-versions.json +27 -0
- package/package.json +94 -4
- package/rules/approved-plan-execution.mdc +65 -0
- package/rules/full-stack-ship-discipline.mdc +37 -0
- package/rules/native-rn-monorepo/README.md +63 -0
- package/rules/native-rn-monorepo/_project.mdc +69 -0
- package/rules/native-rn-monorepo/native-android.mdc +72 -0
- package/rules/native-rn-monorepo/native-ios.mdc +61 -0
- package/rules/native-rn-monorepo/react-native-js.mdc +78 -0
- package/rules/native-rn-monorepo/web.mdc +60 -0
- package/rules/project-starter/components.mdc +54 -0
- package/rules/project-starter/data-fetching.mdc +77 -0
- package/rules/project-starter/git.mdc +41 -0
- package/rules/project-starter/supabase.mdc +37 -0
- package/rules/project-starter/tailwind.mdc +48 -0
- package/rules/project-starter/typescript.mdc +36 -0
- package/rules/project-starter/web-performance.mdc +42 -0
- package/rules/senior-engineer.mdc +30 -0
- package/rules/shell-first-search.mdc +19 -0
- package/rules/skill-workflows.mdc +35 -0
- package/rules/verification-before-completion.mdc +57 -0
- package/skills/audit-accessibility/SKILL.md +441 -0
- package/skills/audit-agent-speed/SKILL.md +181 -0
- package/skills/audit-agent-speed/scripts/stop-typecheck.mjs +151 -0
- package/skills/audit-analytics/SKILL.md +138 -0
- package/skills/audit-auth-flows/SKILL.md +267 -0
- package/skills/audit-backend-architecture/SKILL.md +266 -0
- package/skills/audit-backend-architecture/references/patterns.md +386 -0
- package/skills/audit-bundle-size/SKILL.md +295 -0
- package/skills/audit-cicd/SKILL.md +218 -0
- package/skills/audit-code-quality/SKILL.md +314 -0
- package/skills/audit-code-review/SKILL.md +289 -0
- package/skills/audit-codemod-safety/SKILL.md +159 -0
- package/skills/audit-db-schema/SKILL.md +465 -0
- package/skills/audit-db-schema/references/details.md +110 -0
- package/skills/audit-doctrine/SKILL.md +189 -0
- package/skills/audit-env-parity/SKILL.md +133 -0
- package/skills/audit-fe-api/SKILL.md +458 -0
- package/skills/audit-gate-logic/SKILL.md +219 -0
- package/skills/audit-i18n/SKILL.md +339 -0
- package/skills/audit-infra-cost/SKILL.md +142 -0
- package/skills/audit-langfuse-llm/SKILL.md +468 -0
- package/skills/audit-langfuse-llm/references/details.md +226 -0
- package/skills/audit-llm-security/SKILL.md +147 -0
- package/skills/audit-monetization-iap/SKILL.md +137 -0
- package/skills/audit-payment-system/SKILL.md +268 -0
- package/skills/audit-payment-system/references/checklist.md +283 -0
- package/skills/audit-performance/SKILL.md +383 -0
- package/skills/audit-performance/references/loading-priority-2026.md +81 -0
- package/skills/audit-realworld/SKILL.md +287 -0
- package/skills/audit-registry-listing/SKILL.md +122 -0
- package/skills/audit-resilience/SKILL.md +153 -0
- package/skills/audit-responsive/SKILL.md +221 -0
- package/skills/audit-responsive/references/checklist.md +166 -0
- package/skills/audit-security/SKILL.md +289 -0
- package/skills/audit-skill-conflicts/SKILL.md +178 -0
- package/skills/audit-ui-states/SKILL.md +146 -0
- package/skills/audit-uiux-design-system/SKILL.md +475 -0
- package/skills/audit-uiux-design-system/references/details.md +71 -0
- package/skills/audit-ux/SKILL.md +381 -0
- package/skills/audit-ux/references/details.md +245 -0
- package/skills/audit-ux-journeys/SKILL.md +215 -0
- package/skills/audit-ux-journeys/references/checklist.md +179 -0
- package/skills/backend-db-performance/SKILL.md +441 -0
- package/skills/backend-error-handling/SKILL.md +489 -0
- package/skills/backend-error-handling/references/details.md +58 -0
- package/skills/backend-observability/SKILL.md +88 -0
- package/skills/backend-patterns/SKILL.md +499 -0
- package/skills/backend-patterns/references/architecture-patterns.md +298 -0
- package/skills/backend-realtime/SKILL.md +403 -0
- package/skills/backend-realtime/references/patterns.md +74 -0
- package/skills/burndown-full/SKILL.md +174 -0
- package/skills/complete-everything/SKILL.md +295 -0
- package/skills/data-pipeline/SKILL.md +109 -0
- package/skills/data-visualization/SKILL.md +488 -0
- package/skills/debug-error/SKILL.md +322 -0
- package/skills/debug-fe-be-integration/SKILL.md +459 -0
- package/skills/debug-sentry-monitor/SKILL.md +497 -0
- package/skills/debug-sentry-monitor/references/details.md +165 -0
- package/skills/deploy-npm/SKILL.md +394 -0
- package/skills/deploy-npm/references/example-mushi-mushi.md +52 -0
- package/skills/deploy-verify/SKILL.md +489 -0
- package/skills/design-api/SKILL.md +379 -0
- package/skills/design-canvas/SKILL.md +155 -0
- package/skills/design-email/SKILL.md +370 -0
- package/skills/design-frontend/SKILL.md +143 -0
- package/skills/design-generative-art/SKILL.md +474 -0
- package/skills/design-mobile-first/SKILL.md +506 -0
- package/skills/design-motion/SKILL.md +333 -0
- package/skills/design-motion/references/delight-interactions.md +191 -0
- package/skills/design-prd/SKILL.md +443 -0
- package/skills/design-system/SKILL.md +457 -0
- package/skills/design-theme/SKILL.md +226 -0
- package/skills/design-theme/themes/tsumagoi-ranch.md +150 -0
- package/skills/docs-adr/SKILL.md +168 -0
- package/skills/docs-coauthor/SKILL.md +368 -0
- package/skills/docs-comparison-pages/SKILL.md +117 -0
- package/skills/docs-domain-modeling/SKILL.md +97 -0
- package/skills/docs-launch-kit/SKILL.md +139 -0
- package/skills/docs-writer/SKILL.md +469 -0
- package/skills/enhance-agent-guardrails/SKILL.md +164 -0
- package/skills/enhance-arch-boundaries/SKILL.md +154 -0
- package/skills/enhance-capacitor-ui/SKILL.md +463 -0
- package/skills/enhance-capacitor-ui/references/details.md +750 -0
- package/skills/enhance-email-deliverability/SKILL.md +143 -0
- package/skills/enhance-growth-loops/SKILL.md +122 -0
- package/skills/enhance-lifecycle-email/SKILL.md +130 -0
- package/skills/enhance-motion/SKILL.md +193 -0
- package/skills/enhance-onboarding/SKILL.md +148 -0
- package/skills/enhance-pwa/SKILL.md +303 -0
- package/skills/enhance-readability/SKILL.md +146 -0
- package/skills/enhance-readme/SKILL.md +496 -0
- package/skills/enhance-readme/package-lock.json +187 -0
- package/skills/enhance-readme/package.json +17 -0
- package/skills/enhance-readme/scripts/generate-readme-blocks.mjs +199 -0
- package/skills/enhance-readme/scripts/record-readme-tour.mjs +442 -0
- package/skills/enhance-skill-prompts/SKILL.md +167 -0
- package/skills/enhance-skill-prompts/references/exemplar-audit-auth-flows.md +311 -0
- package/skills/enhance-ux-laws/SKILL.md +409 -0
- package/skills/enhance-web-conversion/SKILL.md +155 -0
- package/skills/enhance-web-forms/SKILL.md +154 -0
- package/skills/enhance-web-instant-nav/SKILL.md +138 -0
- package/skills/enhance-web-instant-nav/references/bfcache-blockers.md +23 -0
- package/skills/enhance-web-instant-nav/references/early-hints.md +33 -0
- package/skills/enhance-web-instant-nav/references/speculation-rules.md +44 -0
- package/skills/enhance-web-landing/SKILL.md +459 -0
- package/skills/enhance-web-landing/references/details.md +773 -0
- package/skills/enhance-web-redesign/SKILL.md +228 -0
- package/skills/enhance-web-seo/SKILL.md +276 -0
- package/skills/enhance-web-ui/SKILL.md +473 -0
- package/skills/enhance-web-ui/references/details.md +674 -0
- package/skills/enhance-web-ux/HEURISTICS.md +248 -0
- package/skills/enhance-web-ux/PATTERNS.md +375 -0
- package/skills/enhance-web-ux/SKILL.md +464 -0
- package/skills/enhance-web-ux/examples.md +222 -0
- package/skills/enhance-web-ux/references/details.md +406 -0
- package/skills/enhance-web-web3d/SKILL.md +397 -0
- package/skills/enhance-web-web3d/references/css-canvas-effects.md +180 -0
- package/skills/handoff/SKILL.md +66 -0
- package/skills/housekeep-backlog/SKILL.md +149 -0
- package/skills/housekeep-dead-code/SKILL.md +387 -0
- package/skills/housekeep-dead-code/references/ratchet-ci.md +205 -0
- package/skills/housekeep-dead-code/references/supabase-hygiene.md +152 -0
- package/skills/housekeep-design/SKILL.md +207 -0
- package/skills/housekeep-files/SKILL.md +220 -0
- package/skills/housekeep-files/references/naming-and-catalog.md +86 -0
- package/skills/housekeep-files/scripts/housekeep-files.ps1 +360 -0
- package/skills/housekeep-files/scripts/housekeep-files.sh +238 -0
- package/skills/housekeep-gates/SKILL.md +174 -0
- package/skills/iterate-agent-harness/SKILL.md +137 -0
- package/skills/iterate-gtm-weekly/SKILL.md +103 -0
- package/skills/iterate-post-launch/SKILL.md +292 -0
- package/skills/meta-mcp-builder/SKILL.md +313 -0
- package/skills/meta-skill-creator/SKILL.md +304 -0
- package/skills/mobile-capacitor-platform/SKILL.md +103 -0
- package/skills/mobile-emulator-start/SKILL.md +296 -0
- package/skills/mobile-emulator-test/SKILL.md +491 -0
- package/skills/mobile-emulator-test/references/details.md +478 -0
- package/skills/mobile-rn-performance/SKILL.md +107 -0
- package/skills/mobile-rn-screen/SKILL.md +476 -0
- package/skills/mobile-rn-screen/references/details.md +785 -0
- package/skills/mushi-health/SKILL.md +206 -0
- package/skills/mushi-integration/SKILL.md +257 -0
- package/skills/plan-aeo-readiness/SKILL.md +166 -0
- package/skills/plan-antislop/SKILL.md +281 -0
- package/skills/plan-aso/SKILL.md +149 -0
- package/skills/plan-backup-dr/SKILL.md +131 -0
- package/skills/plan-capacitor-hardening/SKILL.md +217 -0
- package/skills/plan-data-integrity/SKILL.md +187 -0
- package/skills/plan-dead-code/SKILL.md +386 -0
- package/skills/plan-dead-code/references/knip-config.md +214 -0
- package/skills/plan-dead-code/references/output-templates.md +133 -0
- package/skills/plan-dead-code/references/preservation-contract.md +50 -0
- package/skills/plan-dead-code/references/residue-greps.md +84 -0
- package/skills/plan-dependency-provenance/SKILL.md +200 -0
- package/skills/plan-docs-sync/SKILL.md +143 -0
- package/skills/plan-docs-sync/references/drift-taxonomy.md +43 -0
- package/skills/plan-docs-sync/references/output-templates.md +33 -0
- package/skills/plan-docs-sync/references/preservation-contract.md +17 -0
- package/skills/plan-error-handling/SKILL.md +205 -0
- package/skills/plan-gtm/SKILL.md +276 -0
- package/skills/plan-gtm/references/benchmarks-2026.md +183 -0
- package/skills/plan-input-validation/SKILL.md +179 -0
- package/skills/plan-llm-cost-guardrails/SKILL.md +176 -0
- package/skills/plan-mobile-readiness/SKILL.md +171 -0
- package/skills/plan-perf-audit/SKILL.md +145 -0
- package/skills/plan-perf-audit/references/audit-scope.md +51 -0
- package/skills/plan-perf-audit/references/output-templates.md +33 -0
- package/skills/plan-perf-audit/references/preservation-contract.md +13 -0
- package/skills/plan-pricing/SKILL.md +173 -0
- package/skills/plan-privacy-compliance/SKILL.md +148 -0
- package/skills/plan-rls-audit/SKILL.md +231 -0
- package/skills/plan-secrets-audit/SKILL.md +181 -0
- package/skills/plan-security-audit/SKILL.md +168 -0
- package/skills/plan-security-audit/references/output-templates.md +36 -0
- package/skills/plan-security-audit/references/owasp-supabase-scope.md +55 -0
- package/skills/plan-security-audit/references/preservation-contract.md +18 -0
- package/skills/plan-stub-checker/SKILL.md +216 -0
- package/skills/plan-stub-checker/references/detection-methodology.md +75 -0
- package/skills/plan-stub-checker/references/detection-taxonomy.md +34 -0
- package/skills/plan-stub-checker/references/output-templates.md +63 -0
- package/skills/plan-stub-checker/references/preservation-contract.md +24 -0
- package/skills/plan-test-coverage/SKILL.md +170 -0
- package/skills/plan-test-coverage/references/methodology.md +54 -0
- package/skills/plan-test-coverage/references/output-templates.md +34 -0
- package/skills/plan-test-coverage/references/preservation-contract.md +15 -0
- package/skills/plan-uiux-unification/SKILL.md +230 -0
- package/skills/plan-uiux-unification/references/output-templates.md +67 -0
- package/skills/plan-uiux-unification/references/phase-workbook.md +85 -0
- package/skills/plan-uiux-unification/references/preservation-contract.md +24 -0
- package/skills/protocol-browser-anti-stall/SKILL.md +211 -0
- package/skills/protocol-browser-anti-stall/references/mcp-to-cli-map.md +113 -0
- package/skills/protocol-browser-anti-stall/references/playwright-session-coordination.md +170 -0
- package/skills/research/SKILL.md +422 -0
- package/skills/test-exploratory/SKILL.md +165 -0
- package/skills/test-exploratory/references/charter-template.md +29 -0
- package/skills/test-load/SKILL.md +126 -0
- package/skills/test-mutation/SKILL.md +160 -0
- package/skills/test-playwright/SKILL.md +354 -0
- package/skills/test-qa/SKILL.md +364 -0
- package/skills/test-qa/references/details.md +268 -0
- package/skills/test-red-team/SKILL.md +386 -0
- package/skills/test-red-team/references/owasp-attack-checklist.md +193 -0
- package/skills/test-unit/SKILL.md +259 -0
- package/skills/test-unit/references/details.md +267 -0
- package/skills/test-visual-regression/SKILL.md +132 -0
- package/skills/thirdparty-emil-design-eng/ATTRIBUTION.md +20 -0
- package/skills/thirdparty-emil-design-eng/SKILL.md +21 -0
- package/skills/thirdparty-emil-design-eng/references/emil-design-eng.md +676 -0
- package/skills/thirdparty-ui-ux-pro-max/ATTRIBUTION.md +22 -0
- package/skills/thirdparty-ui-ux-pro-max/SKILL.md +304 -0
- package/skills/thirdparty-ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/thirdparty-ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/thirdparty-ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/thirdparty-ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/thirdparty-ui-ux-pro-max/data/products.csv +97 -0
- package/skills/thirdparty-ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/thirdparty-ui-ux-pro-max/data/styles.csv +68 -0
- package/skills/thirdparty-ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/thirdparty-ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/thirdparty-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/thirdparty-ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/search.py +114 -0
- package/skills/thirdparty-web-interface-guidelines/ATTRIBUTION.md +23 -0
- package/skills/thirdparty-web-interface-guidelines/SKILL.md +190 -0
- package/skills/workflow-build-feature/SKILL.md +118 -0
- package/skills/workflow-coding-discipline/SKILL.md +140 -0
- package/skills/workflow-environment-ready/SKILL.md +128 -0
- package/skills/workflow-feature-flag/SKILL.md +262 -0
- package/skills/workflow-feedback-to-closure/SKILL.md +165 -0
- package/skills/workflow-fix-and-ship/SKILL.md +136 -0
- package/skills/workflow-git-commit/SKILL.md +200 -0
- package/skills/workflow-green-repo/SKILL.md +166 -0
- package/skills/workflow-grilling/SKILL.md +73 -0
- package/skills/workflow-gtm/SKILL.md +153 -0
- package/skills/workflow-housekeep/SKILL.md +453 -0
- package/skills/workflow-housekeep/references/templates.md +109 -0
- package/skills/workflow-launch-ready/SKILL.md +145 -0
- package/skills/workflow-merge-conflicts/SKILL.md +62 -0
- package/skills/workflow-onboard/SKILL.md +99 -0
- package/skills/workflow-parallel-agents/SKILL.md +164 -0
- package/skills/workflow-pr/SKILL.md +197 -0
- package/skills/workflow-quality-gate/SKILL.md +147 -0
- package/skills/workflow-refactor/SKILL.md +274 -0
- package/skills/workflow-release-prep/SKILL.md +207 -0
- package/skills/workflow-ship-and-observe/SKILL.md +164 -0
- package/skills/workflow-spec-tdd/SKILL.md +141 -0
- package/skills/workflow-spec-tdd/references/spec-template.md +126 -0
- package/skills/workflow-spec-tdd/references/tdd-patterns.md +167 -0
- package/skills-cursor/babysit/SKILL.md +17 -0
- package/skills-cursor/canvas/SKILL.md +142 -0
- package/skills-cursor/canvas/sdk/canvas-tokens.d.ts +235 -0
- package/skills-cursor/canvas/sdk/chart-primitives.d.ts +200 -0
- package/skills-cursor/canvas/sdk/dag-layout.d.ts +102 -0
- package/skills-cursor/canvas/sdk/diff-view.d.ts +130 -0
- package/skills-cursor/canvas/sdk/form-primitives.d.ts +194 -0
- package/skills-cursor/canvas/sdk/hooks.d.ts +117 -0
- package/skills-cursor/canvas/sdk/index.d.ts +47 -0
- package/skills-cursor/canvas/sdk/theme.d.ts +61 -0
- package/skills-cursor/canvas/sdk/todo-list.d.ts +49 -0
- package/skills-cursor/canvas/sdk/ui-primitives.d.ts +549 -0
- package/skills-cursor/canvas/sdk/ui-primitives.test.d.ts +2 -0
- package/skills-cursor/create-hook/SKILL.md +238 -0
- package/skills-cursor/create-rule/SKILL.md +185 -0
- package/skills-cursor/create-skill/SKILL.md +269 -0
- package/skills-cursor/create-skill/references/authoring-guide.md +182 -0
- package/skills-cursor/create-subagent/SKILL.md +228 -0
- package/skills-cursor/migrate-to-skills/SKILL.md +121 -0
- package/skills-cursor/shell/SKILL.md +22 -0
- package/skills-cursor/split-to-prs/SKILL.md +47 -0
- package/skills-cursor/statusline/SKILL.md +193 -0
- package/skills-cursor/update-cli-config/SKILL.md +85 -0
- package/skills-cursor/update-cursor-settings/SKILL.md +137 -0
- package/skills.sh.json +297 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Output template — `plan-dead-code.md`
|
|
2
|
+
|
|
3
|
+
Copy this shape. The numbers below are illustrative; every count in a real
|
|
4
|
+
report comes from an executed command, and the only estimated column is
|
|
5
|
+
"After Phase 1".
|
|
6
|
+
|
|
7
|
+
**One row per chain head.** A dead file explains its own exports and the
|
|
8
|
+
packages only it imported — those are *children*, listed in the last column,
|
|
9
|
+
never as separate rows. Twenty-seven findings that collapse to three heads is
|
|
10
|
+
a three-row table, and reporting it as twenty-seven inflates the work.
|
|
11
|
+
|
|
12
|
+
````markdown
|
|
13
|
+
# Dead-Code Audit — <repo>
|
|
14
|
+
|
|
15
|
+
_Audit-only. Nothing is deleted, fixed, or installed until each phase is approved._
|
|
16
|
+
|
|
17
|
+
## Stack fingerprint
|
|
18
|
+
- Bundler: Vite 6 · React 19 · TS paths: yes (`@/*`)
|
|
19
|
+
- shadcn: `src/components/ui` (34 files)
|
|
20
|
+
- Supabase: types at `src/types/supabase.ts` · Edge Functions: `supabase/functions` (5)
|
|
21
|
+
- Dynamic surfaces: `src/router.tsx:18` template-string lazy import
|
|
22
|
+
- Existing: no knip config · ESLint `no-unused-vars: warn` · tsconfig `noUnusedLocals: false`
|
|
23
|
+
- Behavior locked by tests? partial — `src/lib/**` covered, `src/routes/**` not
|
|
24
|
+
|
|
25
|
+
## Proposed `knip.json`
|
|
26
|
+
```json
|
|
27
|
+
<adapted from references/knip-config.md>
|
|
28
|
+
```
|
|
29
|
+
Configuration hints resolved: 3 (vite plugin entry, vitest plugin, tailwind postcss)
|
|
30
|
+
First-run findings: 312 → after configuration: 41. **271 were never dead code.**
|
|
31
|
+
|
|
32
|
+
## Baseline
|
|
33
|
+
| Issue type | `--production` | default | After Phase 1 (est.) |
|
|
34
|
+
|---|---|---|---|
|
|
35
|
+
| Unused files | 9 | 15 | 0 |
|
|
36
|
+
| Unused dependencies | 4 | 4 | 0 |
|
|
37
|
+
| Unused devDependencies | 0 | 3 | 3 |
|
|
38
|
+
| Unlisted dependencies | 1 | 1 | 0 (add) |
|
|
39
|
+
| Unresolved imports | 0 | 0 | 0 |
|
|
40
|
+
| Unused exports | 22 | 61 | ~6 |
|
|
41
|
+
| Unused exported types | 6 | 22 | ~4 |
|
|
42
|
+
| Unused enum members | 0 | 4 | 4 |
|
|
43
|
+
| Duplicate exports | 0 | 2 | 2 |
|
|
44
|
+
| **Total (`--max-issues` seed)** | **12** | **41** | — |
|
|
45
|
+
|
|
46
|
+
Production mode is the number that should reach 0 first: those are findings in
|
|
47
|
+
shipped code.
|
|
48
|
+
|
|
49
|
+
## Findings (chain heads only)
|
|
50
|
+
| # | Type | Path / symbol | Verdict | Sev | Effort | Children |
|
|
51
|
+
|---|---|---|---|---|---|---|
|
|
52
|
+
| D1 | file | `src/lib/formatDate.ts` | kill | Med | S | dep `date-fns`, exports ×3 |
|
|
53
|
+
| D2 | file | `src/components/ui/{accordion,carousel,…}.tsx` ×7 | kill — unused shadcn, re-addable | Low | S | exports ×14, dep `embla-carousel-react` |
|
|
54
|
+
| D3 | file | `src/components/DashboardV2.tsx` | kill — router imports `Dashboard.tsx` | Med | S | exports ×2 |
|
|
55
|
+
| D4 | export | `src/lib/utils.ts` — 23 of 31 exports unused | kill barrel; inline 8 to callers | Med | **M** | — |
|
|
56
|
+
| D5 | dep | `axios` (fetch used everywhere) | kill | **High** — advisory GHSA-… | S | — |
|
|
57
|
+
| D6 | unlisted | `clsx` imported, never declared | add at the resolved version | Med | S | — |
|
|
58
|
+
| K1 | file | `src/routes/Admin.tsx` | keep-config → `entry: ["src/routes/*.tsx!"]` | — | S | — |
|
|
59
|
+
| K2 | export | `src/lib/api.ts#client` | keep-tagged → `@public` (used by `scripts/`) | — | S | — |
|
|
60
|
+
| K3 | export | `src/hooks/useAuth.ts#__testReset` | keep-tagged → `@internal` (production mode only) | — | S | — |
|
|
61
|
+
| N1 | file | `public/img/legacy/**` (12 files) | needs-owner — reached by template string? | — | S | — |
|
|
62
|
+
|
|
63
|
+
Verdicts: `kill` · `keep-tagged` · `keep-config` · `needs-owner`. **A keep row
|
|
64
|
+
always names its remedy** — a keep with no remedy is an `ignore` in disguise,
|
|
65
|
+
and the next agent will delete it.
|
|
66
|
+
|
|
67
|
+
## Residue metrics
|
|
68
|
+
| Metric | Count |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `console.log/debug/info` outside tests | 41 |
|
|
71
|
+
| `debugger` | 2 |
|
|
72
|
+
| `.only` / `.skip` / `.todo` | 1 / 6 / 0 |
|
|
73
|
+
| commented-out code blocks | 18 |
|
|
74
|
+
| `@ts-ignore` + `@ts-expect-error` / `eslint-disable` | 9 / 14 |
|
|
75
|
+
| `: any` / `as any` | 37 |
|
|
76
|
+
| empty `catch {}` | 5 |
|
|
77
|
+
| unused locals (`tsc --noEmit`) | not run — `noUnusedLocals` is off |
|
|
78
|
+
| orphan `public/` assets | 12 (3.4 MB) |
|
|
79
|
+
| env referenced-not-declared / declared-not-referenced | 2 / 5 |
|
|
80
|
+
| duplication (`jscpd`) | 6.2% · 7 clones ≥50 tokens |
|
|
81
|
+
| `*V2` / `*New` / `*Old` / `* copy` files | 4 |
|
|
82
|
+
| **bundle leak (`service_role` in `dist`)** | **0 — clean** |
|
|
83
|
+
|
|
84
|
+
## Root causes
|
|
85
|
+
Not a list of items — the thing to fix:
|
|
86
|
+
1. `src/lib/utils.ts` is a dumping ground (D4). One split removes 23 findings.
|
|
87
|
+
2. shadcn was installed wholesale (D2). 7 of 34 components are unwired.
|
|
88
|
+
3. `noUnusedLocals` has never been on, so nothing inside files was ever checked.
|
|
89
|
+
|
|
90
|
+
## Phased burndown
|
|
91
|
+
- **Phase 1 — Config + files** → commit `knip.json`; delete D1–D3. Re-run; expect deps to *rise* before they fall.
|
|
92
|
+
- **Phase 2 — Exports + types** → `--fix-type exports,types`; split D4; linter cascade; repeat until stable.
|
|
93
|
+
- **Phase 3 — Dependencies** → remove D5 + chain survivors; add D6; clean install; build.
|
|
94
|
+
- **Phase 4 — Residue** → console, `debugger`, `.only`, commented blocks, orphan versions, assets, `.env.example` sync.
|
|
95
|
+
- **Phase 5 — Suppressions** → 9 `@ts-ignore` → fix or `@ts-expect-error` + reason.
|
|
96
|
+
- **Phase 6 — Ratchet** → `knip` script + CI job at `--max-issues 3`, into the `housekeep-gates` aggregator.
|
|
97
|
+
- **Phase 7 — Supabase arm** → 2 never-queried tables, 1 uninvoked Edge Function, 3 unused indexes, types-drift guard. Drops are migrations, after approval.
|
|
98
|
+
|
|
99
|
+
Risk per phase, and what must keep working: Phase 1 must not break the
|
|
100
|
+
template-string router (K1); Phase 3 must not remove a dep reached only from
|
|
101
|
+
`tailwind.config.ts`; Phase 7 touches no production data.
|
|
102
|
+
|
|
103
|
+
## Ratchet target
|
|
104
|
+
`--max-issues` seed: 41 default / 12 production → after Phase 3: ≤10 / 0 → target 0 / 0.
|
|
105
|
+
Duplication 6.2% → ≤4%. Suppressions 23 → ≤15. All shrink-only.
|
|
106
|
+
|
|
107
|
+
## Execution handoff
|
|
108
|
+
Approve a phase to run it via `housekeep-dead-code`. `.skip` rows and TODO
|
|
109
|
+
counts → `housekeep-backlog`. Duplication → `workflow-refactor`. Schema drops →
|
|
110
|
+
`plan-data-integrity` then `db-migrator`.
|
|
111
|
+
````
|
|
112
|
+
|
|
113
|
+
## Why the table has a Children column
|
|
114
|
+
|
|
115
|
+
Without it, agents report chains as independent findings and the plan looks
|
|
116
|
+
five times larger than the work. The re-run after Phase 1 is where children
|
|
117
|
+
disappear — and where a *few new* findings appear, because deleting a file can
|
|
118
|
+
orphan the dependency only it imported. Both directions are expected; say so
|
|
119
|
+
in the plan so the apply pass does not treat the delta as a surprise.
|
|
120
|
+
|
|
121
|
+
## Severity and effort
|
|
122
|
+
|
|
123
|
+
**Severity** — High: an unused dependency with an open advisory, an orphan file
|
|
124
|
+
holding credentials or PII fixtures, duplicated business logic that has already
|
|
125
|
+
diverged. Medium: unused files and exports. Low: unused types, enum members,
|
|
126
|
+
class members.
|
|
127
|
+
|
|
128
|
+
**Effort** — S: delete a file, drop an `export` keyword. M: a barrel, a
|
|
129
|
+
dumping-ground split, a duplicate merge. L: anything needing a framework config
|
|
130
|
+
change or a database migration.
|
|
131
|
+
|
|
132
|
+
Severity orders the phases; effort decides whether an item belongs here or in
|
|
133
|
+
`workflow-refactor`.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Preservation contract — plan-dead-code
|
|
2
|
+
|
|
3
|
+
This pass produces a document. It changes no behavior and no files other than
|
|
4
|
+
writing `plan-dead-code.md`.
|
|
5
|
+
|
|
6
|
+
## Never do in this pass
|
|
7
|
+
|
|
8
|
+
- **Delete, `--fix`, `rm`, or edit `package.json` / the lockfile.** The
|
|
9
|
+
deliverable is a report plus a *proposed* config.
|
|
10
|
+
- **Commit `knip.json`.** It lives in the report; `housekeep-dead-code`
|
|
11
|
+
commits it.
|
|
12
|
+
- **Add an `ignore` glob** for anything other than a machine-generated file
|
|
13
|
+
you regenerate rather than edit. `entry`, `paths`, `--production`, and the
|
|
14
|
+
`@public` / `@internal` / `@alias` tags are the real remedies.
|
|
15
|
+
- **Report a chain child as its own finding.** Children live under their head.
|
|
16
|
+
- **Treat a passing test as proof something is alive.** Production mode
|
|
17
|
+
decides reachability; a test that only imports dead code is dead too.
|
|
18
|
+
- **Print an env value, a token, or a connection string.** Names only.
|
|
19
|
+
- **Write to a database.** Every schema query in Phase 3g is read-only.
|
|
20
|
+
- **Estimate a count.** Every baseline number comes from an executed command.
|
|
21
|
+
If a check could not run, the row reads `not run` with the reason.
|
|
22
|
+
|
|
23
|
+
## Before any change proposal
|
|
24
|
+
|
|
25
|
+
One line per phase: **what currently works here that must keep working.** The
|
|
26
|
+
router, the auth flow, the build, the scripts CI runs, the webhook nobody
|
|
27
|
+
imports. A phase without that line is not reviewable.
|
|
28
|
+
|
|
29
|
+
## Verdict buckets
|
|
30
|
+
|
|
31
|
+
| Bucket | Meaning |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `kill` | Unreachable in production mode *after* the config was settled |
|
|
34
|
+
| `keep-tagged` | Reachable, or deliberately public — remedy is `@public` / `@internal` / `@alias` |
|
|
35
|
+
| `keep-config` | The finding is a gap in Knip's model — remedy is `entry`, `paths`, or a plugin |
|
|
36
|
+
| `chain` | Disappears when its parent goes; not counted separately |
|
|
37
|
+
| `needs-owner` | Plausibly dead, but a human must decide. Never upgraded to `kill` to shrink the list |
|
|
38
|
+
| `defer` | Real, but over M effort → `workflow-refactor` / `housekeep-backlog` |
|
|
39
|
+
|
|
40
|
+
## The failure this contract prevents
|
|
41
|
+
|
|
42
|
+
An agent runs `knip` on a vibe-coded repo, gets three hundred findings, and
|
|
43
|
+
starts deleting. Typecheck stays green and the unit tests stay green, because
|
|
44
|
+
neither can see a route loaded by template string, an Edge Function called by
|
|
45
|
+
a Stripe webhook, or an asset referenced from a CSS `url()`. The app breaks in
|
|
46
|
+
production, and the commit that broke it deleted forty other things at the same
|
|
47
|
+
time.
|
|
48
|
+
|
|
49
|
+
Configuration first, evidence per row, and one category per commit exist to
|
|
50
|
+
make that specific outcome impossible.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Residue grep pack
|
|
2
|
+
|
|
3
|
+
What Knip cannot see: junk *inside* live files, plus assets, env, and
|
|
4
|
+
duplication. `plan-dead-code` records the counts; `housekeep-dead-code`
|
|
5
|
+
applies the fix column. Adjust `src` to the detected source directory.
|
|
6
|
+
|
|
7
|
+
**Counting convention.** Use `rg -o … | wc -l` for a repo total of *matches*.
|
|
8
|
+
`rg -c` prints per-file counts of matching *lines*, so two `console.log` calls
|
|
9
|
+
on one line count once — fine for triage, wrong for a ratchet. Pick one and
|
|
10
|
+
keep it: the baseline and the post-cleanup number must be produced by the same
|
|
11
|
+
command or the ratchet compares nothing.
|
|
12
|
+
|
|
13
|
+
| Class | Count command | Fix (housekeep only) |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| Debug logging | `rg -o "console\.(log\|debug\|info)\(" src --glob '!**/*.{test,spec}.*' \| wc -l` | Delete, or route through the project's existing logger. **Never add a logger to satisfy this pass.** `console.error/warn` in catch blocks stay. |
|
|
16
|
+
| `debugger` | `rg -n "^\s*debugger;?\s*$" src` | Delete |
|
|
17
|
+
| Focused tests | `rg -n "\b(it\|test\|describe)\.only\(" src tests e2e 2>/dev/null` | Remove the **modifier**. `.only` silently disables the rest of its file, so the suite may go red — that is a bug it was hiding |
|
|
18
|
+
| Skipped tests | `rg -n "\b(it\|test\|describe)\.(skip\|todo)\(\|\bx(it\|describe)\(" src tests e2e 2>/dev/null` | Do not delete the test → un-skip and fix, or register rows in `housekeep-backlog` |
|
|
19
|
+
| Commented-out code | `rg -n "^\s*//\s*(const\|let\|var\|import\|export\|return\|if \(\|for \(\|await \|function\|\}\|<[A-Za-z])" src` | Delete the block. Git is the archive; "keep for reference" is not a reason |
|
|
20
|
+
| Placeholders | `rg -n -i "your logic here\|implement me\|lorem ipsum\|placeholder text\|TODO: implement" src` | Wire or delete. If the control is user-visible → `plan-stub-checker` |
|
|
21
|
+
| TODO / FIXME / HACK | `rg -o "TODO\|FIXME\|HACK\|XXX" src \| wc -l` | Count only → `housekeep-backlog` |
|
|
22
|
+
| Orphan versions | `rg --files src \| rg -i "(v2\|v3\|new\|old\|copy\|backup\|final\|tmp)\.(tsx?\|css)$"` | Confirm which one the router/imports actually use; delete the rest. The survivor keeps its original name |
|
|
23
|
+
| Dumping grounds | see script below | >15 exports: split by domain, or inline single-caller helpers |
|
|
24
|
+
| `@ts-ignore` / `@ts-expect-error` | `rg -o "@ts-ignore\|@ts-expect-error" src \| wc -l` | Fix the type, or convert to `@ts-expect-error <reason>` — it self-expires, and TS reports it once the error is gone |
|
|
25
|
+
| `eslint-disable` | `rg -o "eslint-disable\|biome-ignore" src \| wc -l` | Per-line with a reason, or fix. File-level disables are removed and the file fixed |
|
|
26
|
+
| `any` | `rg -o ":\s*any\b\|as any\b\|<any>" src \| wc -l` | Ratchet metric. Fix only where it hides a real bug this pass. **Never widen a type to remove a suppression** |
|
|
27
|
+
| Empty catch | `rg -n -U "catch\s*(\([^)]*\))?\s*\{\s*\}" src` | Log + rethrow, or one line saying why swallowing is correct |
|
|
28
|
+
| Orphan assets | see script below | Delete. Confirm no reference from CSS, `index.html`, or storage seeds first |
|
|
29
|
+
| Env drift | see script below | Add missing keys to `.env.example`; remove declared-but-unreferenced. **Names only — never print values** |
|
|
30
|
+
| Duplication | `npx jscpd src --min-tokens 50 --min-lines 5 --reporters console` | Behavior-preserving → `workflow-refactor`, never bundled with a deletion commit |
|
|
31
|
+
| Bundle leak | `npm run build && rg -l "service_role\|SUPABASE_SERVICE_ROLE" dist` | **Any hit stops the pass** → `plan-secrets-audit` immediately |
|
|
32
|
+
|
|
33
|
+
The bundle-leak row is not dead-code hygiene — it is the one check here that
|
|
34
|
+
can find a live credential in shipped output. Run it even if the rest of
|
|
35
|
+
Phase 3 is skipped.
|
|
36
|
+
|
|
37
|
+
## Dumping grounds
|
|
38
|
+
|
|
39
|
+
An AI-written `lib/utils.ts` accretes helpers nobody deletes. Rank by export
|
|
40
|
+
count so the barrel itself becomes the finding:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
for f in $(rg --files src | rg "(utils|helpers)/.*\.tsx?$|lib/utils\.tsx?$"); do
|
|
44
|
+
echo "$(rg -c '^export ' "$f" 2>/dev/null || echo 0) $f"
|
|
45
|
+
done | sort -rn
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
If one file explains twenty unused-export findings, that is **one M-effort
|
|
49
|
+
fix**, not twenty S-effort ones. Report the barrel.
|
|
50
|
+
|
|
51
|
+
## Orphan assets
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
for f in $(find public -type f ! -name "*.md" 2>/dev/null); do
|
|
55
|
+
b=$(basename "$f")
|
|
56
|
+
rg -q --fixed-strings "$b" src index.html 2>/dev/null || echo "orphan: $f ($(du -h "$f" | cut -f1))"
|
|
57
|
+
done
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Repeat for `src/assets` against `src`. Because the loop searches `src`, fonts
|
|
61
|
+
referenced only from a CSS `@font-face` count as used.
|
|
62
|
+
|
|
63
|
+
**Known false positive:** hashed or templated references
|
|
64
|
+
(`` `/img/${slug}.png` ``, Vite's `new URL('./x.png', import.meta.url)`) never
|
|
65
|
+
match a basename scan. A directory reached only by template string is
|
|
66
|
+
`needs-owner`, not dead.
|
|
67
|
+
|
|
68
|
+
## Env drift
|
|
69
|
+
|
|
70
|
+
Both directions matter: referenced-but-undeclared breaks production;
|
|
71
|
+
declared-but-unreferenced is dead config.
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
rg -o "import\.meta\.env\.[A-Z0-9_]+" src | sed 's/.*env\.//' | sort -u > /tmp/env-used
|
|
75
|
+
rg -o "process\.env\.[A-Z0-9_]+" src | sed 's/.*env\.//' | sort -u >> /tmp/env-used
|
|
76
|
+
sort -u -o /tmp/env-used /tmp/env-used
|
|
77
|
+
rg -o "^[A-Z0-9_]+" .env.example | sort -u > /tmp/env-declared
|
|
78
|
+
|
|
79
|
+
echo "referenced, not declared:"; comm -23 /tmp/env-used /tmp/env-declared
|
|
80
|
+
echo "declared, not referenced:"; comm -13 /tmp/env-used /tmp/env-declared
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Any `VITE_` / `NEXT_PUBLIC_` key whose value is not meant for the browser is a
|
|
84
|
+
secrets finding, not an env-hygiene one → `plan-secrets-audit`.
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-dependency-provenance
|
|
3
|
+
description: >
|
|
4
|
+
Plan-only audit of dependencies for hallucinated or slopsquatted packages,
|
|
5
|
+
supply-chain risk, and license gaps. Use when "check my dependencies", "is
|
|
6
|
+
this package real", "slopsquatting", "SBOM", or "did the AI hallucinate a
|
|
7
|
+
package".
|
|
8
|
+
license: MIT
|
|
9
|
+
effort: high
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Dependency Provenance & Supply-Chain Audit + Remediation Plan
|
|
13
|
+
|
|
14
|
+
**Degree of freedom: HIGH** — resolve, classify, plan. Stay **plan-only**.
|
|
15
|
+
Never install a suspect package to "check".
|
|
16
|
+
|
|
17
|
+
## This skill vs neighbors
|
|
18
|
+
|
|
19
|
+
| Skill | Owns |
|
|
20
|
+
|---|---|
|
|
21
|
+
| **plan-dependency-provenance** (this) | Slopsquatting / SBOM / license plan |
|
|
22
|
+
| `plan-security-audit` | OWASP umbrella burndown |
|
|
23
|
+
| `workflow-housekeep` | Apply dependency updates after approval |
|
|
24
|
+
| `plan-dead-code` | Unimported deps + unreachable source (graph fact) |
|
|
25
|
+
|
|
26
|
+
## How to reason (every plan item)
|
|
27
|
+
|
|
28
|
+
1. **Propose** — verify, remove, pin, or license-remediate a package
|
|
29
|
+
2. **Risk** — squat, unsigned install, license conflict, or lockfile roll
|
|
30
|
+
3. **Keep-working** — packages that already resolve, pin, and license clean
|
|
31
|
+
4. **Phase** — verify/remove → lock & pin → license → de-bloat (do not execute)
|
|
32
|
+
|
|
33
|
+
## Worked example
|
|
34
|
+
|
|
35
|
+
> **Propose:** remove `fast-cache-utils` (no registry hit); do not `npm install` it to "check".
|
|
36
|
+
> **Risk:** AI-suggested name is a squat — install *is* the attack.
|
|
37
|
+
> **Keep-working:** `zod` resolves, MIT, maintained repo.
|
|
38
|
+
> **Phase:** Phase 1 — verify/remove suspect packages.
|
|
39
|
+
|
|
40
|
+
**Role:** Senior supply-chain engineer + open-source compliance specialist.
|
|
41
|
+
|
|
42
|
+
**Task:** Resolve every direct dependency against its registry, run checklist A–E,
|
|
43
|
+
build the provenance table, phase remediations, emit `plan-dependency-provenance.md`.
|
|
44
|
+
**Audit & plan only — never install suspect packages to verify.**
|
|
45
|
+
|
|
46
|
+
**Verify every package is real, safe, and licensed. Install nothing until approved.**
|
|
47
|
+
|
|
48
|
+
In a vibe-coding loop "just install the suggested package" is the default move —
|
|
49
|
+
and it's now a documented attack surface. The Cloud Security Alliance's 2026
|
|
50
|
+
research found AI coding tools recommend **non-existent package names ~20% of the
|
|
51
|
+
time**, and **43% of those hallucinated names recur on every run of the same prompt.**
|
|
52
|
+
Consistent hallucinations are predictable; predictable names are registerable.
|
|
53
|
+
Attackers pre-register them on npm/PyPI — **slopsquatting** — then wait for
|
|
54
|
+
developers (or autonomous agents) to run the exact `npm install` / `pip install`
|
|
55
|
+
the AI just wrote. With agents executing their own generated install commands, the
|
|
56
|
+
human checkpoint disappears entirely.
|
|
57
|
+
|
|
58
|
+
This skill is the **audit-and-plan** half. Execution (removal, replacement, pinning,
|
|
59
|
+
license remediation) is handed off after you approve each phase.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## When this fires
|
|
64
|
+
|
|
65
|
+
Trigger phrases: *"check my dependencies"*, *"is this package real"*,
|
|
66
|
+
*"slopsquatting"*, *"are my packages safe"*, *"audit my supply chain"*, *"license
|
|
67
|
+
check"*, *"generate an SBOM"*, *"did the AI invent a package"*, *"pre-launch /
|
|
68
|
+
pre-open-source dependency audit"*.
|
|
69
|
+
|
|
70
|
+
Do **not** fire for: routine version bumps (`/update-deps`), bundle-size trimming
|
|
71
|
+
(`audit-bundle-size`), or general repo cleanup (`workflow-housekeep`). This skill
|
|
72
|
+
owns *existence, integrity, provenance, and licensing* of dependencies.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Why a dedicated skill
|
|
77
|
+
|
|
78
|
+
`/update-deps` assumes the packages are *legitimate* and just need upgrading.
|
|
79
|
+
This skill asks the prior question the AI era forces: *is this package even real,
|
|
80
|
+
who published it, when, and under what license?*
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## The audit [HIGH freedom]
|
|
85
|
+
|
|
86
|
+
### A · Existence & slopsquatting (the AI-era core)
|
|
87
|
+
- **Resolve every direct dependency** against its registry, including names you recognize — recognizing a name is not knowing its current registry state. Flag any that don't
|
|
88
|
+
exist, were published very recently, have near-zero downloads, or inconsistent history.
|
|
89
|
+
- **Typo / confusion check** — names one edit away from a popular package
|
|
90
|
+
(`reqests`, `lodahs`), or conflation names merging two real packages.
|
|
91
|
+
- **AI-origin flag** — obscure/novel deps in vibe-coded projects: guilty-until-verified.
|
|
92
|
+
- **Maintainer & repo signals** — no source repo, single recent maintainer: elevate.
|
|
93
|
+
|
|
94
|
+
### B · Lockfile & integrity
|
|
95
|
+
- **Lockfile present and committed?** No lockfile = every install is a fresh roll.
|
|
96
|
+
- **Pinned vs floating** — wildcard/`^`/`latest` on security-sensitive deps.
|
|
97
|
+
- **Lockfile drift** — manifest and lockfile disagree.
|
|
98
|
+
|
|
99
|
+
### C · Provenance & patch history
|
|
100
|
+
- **Source repo reachable**, actively maintained, not archived.
|
|
101
|
+
- **Known vulnerabilities** — flag deps with open advisories (recommend Socket.dev /
|
|
102
|
+
Phylum / `npm audit` / `pip-audit` in execution).
|
|
103
|
+
- **Install scripts** — postinstall reaching network/filesystem: flag for review.
|
|
104
|
+
|
|
105
|
+
### D · Licensing
|
|
106
|
+
- **License inventory** — SPDX per dependency. Flag copyleft in proprietary paths,
|
|
107
|
+
"no license", conflicts with project license.
|
|
108
|
+
- **Attribution gaps** — bundled code lacking NOTICE.
|
|
109
|
+
|
|
110
|
+
### E · Bloat & blast radius
|
|
111
|
+
- **Transitive depth** — direct vs total; duplicate libs.
|
|
112
|
+
- **Unused dependencies** — declared but never imported. Flag the *manifest
|
|
113
|
+
fact* here; the module-graph proof and removal belong to `plan-dead-code`
|
|
114
|
+
→ `housekeep-dead-code`. Do not hand-verify with a grep — a dep reached
|
|
115
|
+
only from a config string looks unused and is not.
|
|
116
|
+
|
|
117
|
+
For each finding: package, issue, evidence, severity, remediation *direction*.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Procedure [HIGH freedom]
|
|
122
|
+
|
|
123
|
+
1. **Inventory.** Parse manifests + lockfiles. State ecosystems and resolution limits.
|
|
124
|
+
2. **Resolve & classify.** Checklist A–E. Tag Critical / High / Med / Low.
|
|
125
|
+
3. **Build the provenance table** — key artifact.
|
|
126
|
+
4. **Phase the burndown.** Verify/remove suspect packages first.
|
|
127
|
+
5. **Emit `plan-dependency-provenance.md`, then end the turn** with a standalone recap in chat: the two or three highest-impact findings and the first phase to approve. The file is the deliverable — write it before the recap. **Do not install anything.**
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Guardrails [LOW freedom — run exactly]
|
|
132
|
+
|
|
133
|
+
- **Plan only.** No `install`, `add`, `remove`, `update`, or lockfile edits.
|
|
134
|
+
- **Never install to "check".** That is exactly the attack.
|
|
135
|
+
- **Guilty until verified** for AI-suggested obscure deps.
|
|
136
|
+
- **Existence ≠ safety.** Run the full checklist.
|
|
137
|
+
- **License is a real finding.**
|
|
138
|
+
- **Recommend `create-hook`** pre-install allowlist as regression gate.
|
|
139
|
+
- **Minimal quoting** of manifests.
|
|
140
|
+
|
|
141
|
+
## Self-critique before the burndown [LOW freedom — do not skip]
|
|
142
|
+
|
|
143
|
+
1. **evidenced-not-assumed** — registry resolve (or "none found"), not vibe
|
|
144
|
+
2. **plan-only** — no install/add/remove/update to "check"
|
|
145
|
+
3. **phase justified** — squat/non-existent is Phase 1, not de-bloat
|
|
146
|
+
4. **right-owner** — routine bumps → `/update-deps`; bundle trim → `audit-bundle-size`; unimported deps + dead source → `plan-dead-code`
|
|
147
|
+
5. **no-false-safety** — exists ≠ safe; license is a finding
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Report template — `plan-dependency-provenance.md`
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
# Dependency Provenance & Supply-Chain Audit — <repo>
|
|
155
|
+
|
|
156
|
+
_Audit-only. Nothing is installed, removed, or upgraded until each phase is approved._
|
|
157
|
+
|
|
158
|
+
## Scope
|
|
159
|
+
- Ecosystems: npm ☐ pip ☐ other ☐ | Direct deps: n Transitive: n
|
|
160
|
+
- Lockfile(s): present ☐ committed ☐ | Assumptions: …
|
|
161
|
+
|
|
162
|
+
## Verdict
|
|
163
|
+
| Severity | Count | Worst case |
|
|
164
|
+
|----------|-------|-----------|
|
|
165
|
+
| Critical | n | non-existent / squat-suspect / malicious package installed |
|
|
166
|
+
| High | n | no lockfile, license conflict, open advisory |
|
|
167
|
+
| Medium | n | floating pins, abandoned upstream |
|
|
168
|
+
| Low | n | bloat, unused deps |
|
|
169
|
+
|
|
170
|
+
## Provenance table (suspect + notable)
|
|
171
|
+
| Package | Exists? | First pub | Weekly DLs | License | Repo | Verdict |
|
|
172
|
+
|---------|---------|-----------|------------|---------|------|---------|
|
|
173
|
+
| fast-cache-utils | ❓ none found | — | — | — | none | Crit: likely hallucinated → remove |
|
|
174
|
+
|
|
175
|
+
## Findings
|
|
176
|
+
| # | Package | Issue | Evidence | Sev | Direction |
|
|
177
|
+
|---|---------|-------|----------|-----|-----------|
|
|
178
|
+
|
|
179
|
+
## Phased burndown
|
|
180
|
+
- **Phase 1 — Verify/remove suspect packages** → manual verify + removal
|
|
181
|
+
- **Phase 2 — Lock & pin** → `workflow-housekeep`
|
|
182
|
+
- **Phase 3 — License & advisories** → wire Socket.dev/Phylum/npm-audit
|
|
183
|
+
- **Phase 4 — De-bloat** → remove unused/duplicate deps
|
|
184
|
+
- **Gate** → `create-hook` pre-install allowlist
|
|
185
|
+
|
|
186
|
+
## Execution handoff
|
|
187
|
+
Approve a phase to run it. Re-scan after; add the install-time gate.
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Chains with
|
|
193
|
+
|
|
194
|
+
- **Pre-launch hardening loop** — supply-chain layer alongside security spine.
|
|
195
|
+
- **`plan-secrets-audit`** — both feed `create-hook` regression gates.
|
|
196
|
+
- **Execution:** `workflow-housekeep`, `create-hook`, `/update-deps` (after verified),
|
|
197
|
+
`audit-security`.
|
|
198
|
+
- **Verify:** re-resolve tree; confirm install-time gate is live.
|
|
199
|
+
|
|
200
|
+
> Planned at high effort; executed at the default effort under the approved-plan execution rule (`approved-plan-execution.mdc`). The plan says *which* packages are suspect; the rule forbids "just installing it to see".
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-docs-sync
|
|
3
|
+
description: >
|
|
4
|
+
Plan-only audit of documentation against actual code behavior. Use when
|
|
5
|
+
"docs drift", "sync docs with code", "audit documentation", "stale README",
|
|
6
|
+
"onboarding docs broken", "phantom docs", or "docs out of date".
|
|
7
|
+
Decisions/ADRs → docs-adr.
|
|
8
|
+
license: MIT
|
|
9
|
+
effort: high
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Docs Drift Audit + Sync Plan
|
|
13
|
+
|
|
14
|
+
**Degree of freedom: MIXED** — inventory globs are exact; drift judgment
|
|
15
|
+
is high. Stay **plan-only**. No rewrites until approved.
|
|
16
|
+
|
|
17
|
+
**Role:** Senior engineer + technical writer.
|
|
18
|
+
|
|
19
|
+
**Task:** Audit all documentation against what the code **actually does**, find every drift,
|
|
20
|
+
plan corrections. README, CONTRIBUTING, setup/onboarding, API docs, JSDoc/docstrings,
|
|
21
|
+
architecture notes, `.env.example`, CLI `--help`, changelogs. **Audit & plan only.**
|
|
22
|
+
|
|
23
|
+
## This skill vs neighbors
|
|
24
|
+
|
|
25
|
+
| Skill | Does |
|
|
26
|
+
|-------|------|
|
|
27
|
+
| **plan-docs-sync** (this) | Plan doc corrections from code truth |
|
|
28
|
+
| `docs-writer` | Write/improve docs (execution) |
|
|
29
|
+
| `workflow-housekeep` | README refresh as part of housekeeping |
|
|
30
|
+
| `plan-stub-checker` | Stubs/dead UI — often surfaces phantom docs |
|
|
31
|
+
|
|
32
|
+
**Loop position:** run **last** in the six-skill plan loop. See `docs/PLAN-LOOPS.md`.
|
|
33
|
+
|
|
34
|
+
## How to reason (every plan item)
|
|
35
|
+
|
|
36
|
+
1. **Propose** — correction that makes the doc match code truth
|
|
37
|
+
2. **Risk** — onboard fail, phantom API, or invented behavior if left stale
|
|
38
|
+
3. **Keep-working** — claims already backed by path:line
|
|
39
|
+
4. **Phase** — factual drift first; wording last (do not execute)
|
|
40
|
+
|
|
41
|
+
## Worked example
|
|
42
|
+
|
|
43
|
+
> **Propose:** drop `STRIPE_WEBHOOK_SECRET` from the README setup list (absent from `.env.example` and code); document `POST /v1/webhooks/stripe` which exists undocumented.
|
|
44
|
+
> **Risk:** onboarding fails on a phantom env var; integrators miss a live endpoint.
|
|
45
|
+
> **Keep-working:** CONTRIBUTING install steps match `package.json` scripts.
|
|
46
|
+
> **Phase:** first sync slice — factual drift only.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## ⛔ Preservation Contract [LOW freedom — run exactly]
|
|
51
|
+
|
|
52
|
+
Read `references/preservation-contract.md`. Acknowledge in output #1.
|
|
53
|
+
|
|
54
|
+
Core guardrail: **docs describe real, current behavior — never aspirational or invented.**
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## References
|
|
59
|
+
|
|
60
|
+
| File | Contents |
|
|
61
|
+
|------|----------|
|
|
62
|
+
| `references/drift-taxonomy.md` | Types, detection passes, guardrails |
|
|
63
|
+
| `references/output-templates.md` | Burndown, phased sync plan |
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Phase flow
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
1. Inventory all doc surfaces
|
|
71
|
+
2. Code-as-source-of-truth pass
|
|
72
|
+
3. Reverse pass (missing docs)
|
|
73
|
+
4. Onboarding replay (.env.example + CLI help)
|
|
74
|
+
5. Signature + cross-doc consistency + links
|
|
75
|
+
6. Burndown + phased sync plan
|
|
76
|
+
7. Research + guardrails (docs-as-code, CI drift checks)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Phase 1 — Doc inventory [LOW freedom — run exactly]
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Glob: README.md CONTRIBUTING.md docs/**/*.md **/*README*.md
|
|
85
|
+
Glob: .env.example
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
List: README, CONTRIBUTING, docs/, inline JSDoc targets, OpenAPI, CLI help, changelog.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Phase 2–5 — Detection [HIGH freedom]
|
|
93
|
+
|
|
94
|
+
Execute all passes in `references/drift-taxonomy.md`.
|
|
95
|
+
|
|
96
|
+
**Onboarding-drift check (standout):** extract env var names + setup commands from onboarding docs; diff against `.env.example` keys and `package.json` scripts; run CLI `--help` where safe and compare.
|
|
97
|
+
|
|
98
|
+
Every drift: **doc claim** + **code truth** (path:line). Can't verify → `[NEEDS VERIFICATION]`.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Phase 6 — Burndown + sync plan [HIGH freedom — plan only]
|
|
103
|
+
|
|
104
|
+
Template: `references/output-templates.md`
|
|
105
|
+
|
|
106
|
+
Quantify: e.g. "9 phantom env vars, 14 undocumented endpoints, 6 onboarding steps that fail".
|
|
107
|
+
|
|
108
|
+
Per drift: before/after correction + "what's still accurate here". **Plan only — no rewrites until approval.**
|
|
109
|
+
|
|
110
|
+
**Industry enhancements** (Firecrawl, current year): docs-as-code, doc-in-same-PR, CI drift vs `.env.example` + CLI help, generated API refs, `llms.txt`.
|
|
111
|
+
|
|
112
|
+
## Self-critique before the burndown [LOW freedom — do not skip]
|
|
113
|
+
|
|
114
|
+
1. **evidenced-not-assumed** — every drift is doc claim + code path:line (or `[NEEDS VERIFICATION]`)
|
|
115
|
+
2. **plan-only** — no rewrites; deletions are proposals
|
|
116
|
+
3. **phase justified** — factual drift before wording polish
|
|
117
|
+
4. **right-owner** — why-we-chose-X → `docs-adr`; stubs/dead UI → `plan-stub-checker`
|
|
118
|
+
5. **no-false-safety** — never document invented or aspirational behavior
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Required output (in order)
|
|
123
|
+
|
|
124
|
+
1. Preservation-contract acknowledgment
|
|
125
|
+
2. Drift taxonomy results (counts per type)
|
|
126
|
+
3. Per-doc drift inventory (checklist)
|
|
127
|
+
4. Burndown table (code-truth + risk)
|
|
128
|
+
5. Sync + enhancement plan, phased
|
|
129
|
+
6. Guardrails/tooling
|
|
130
|
+
7. Research notes + citations
|
|
131
|
+
8. Open questions / `[NEEDS VERIFICATION]` list
|
|
132
|
+
|
|
133
|
+
End the turn with a standalone recap in chat: the two or three highest-impact drifts and the first sync slice to approve. The report is the deliverable — write it before the recap.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Rules [LOW freedom — run exactly]
|
|
138
|
+
|
|
139
|
+
- Plan only — do not rewrite docs until approved.
|
|
140
|
+
- Code is source of truth. Every drift = doc claim + code fact.
|
|
141
|
+
- Never document invented or aspirational behavior.
|
|
142
|
+
- Stale docs get corrected, not deleted. Deletions are proposals.
|
|
143
|
+
- Separate factual drift vs subjective wording improvement.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Drift Taxonomy & Methodology
|
|
2
|
+
|
|
3
|
+
## Types
|
|
4
|
+
|
|
5
|
+
| Type | Definition |
|
|
6
|
+
|------|------------|
|
|
7
|
+
| **stale** | Doc describes old behavior (renamed params, changed defaults, moved files) |
|
|
8
|
+
| **missing** | Shipped feature/flag/endpoint/env with no docs |
|
|
9
|
+
| **phantom** | Doc describes feature/route/option that no longer exists or never shipped |
|
|
10
|
+
| **contradictory** | Two docs disagree, or doc vs inline comment disagree |
|
|
11
|
+
| **onboarding-breaking** | Setup steps fail — wrong install cmd, env var mismatch, dead link, outdated version |
|
|
12
|
+
| **inline-rot** | Comments/docstrings lie; `@param`/`@returns` ≠ signature |
|
|
13
|
+
| **api-contract** | Documented request/response ≠ actual endpoint/schema |
|
|
14
|
+
|
|
15
|
+
## Detection passes
|
|
16
|
+
|
|
17
|
+
1. **Code-as-source-of-truth:** for each doc claim, find proving/disproving code. Cite both.
|
|
18
|
+
2. **Reverse pass (missing docs):** routes, exported APIs, env vars, CLI commands, flags, config keys → zero docs?
|
|
19
|
+
3. **Onboarding replay:** setup docs vs `package.json` scripts, `.env.example`, install/run, CLI `--help`.
|
|
20
|
+
4. **Onboarding-drift CI pattern:** correlate doc env/setup claims against live `.env.example` + `npm run … -- --help` output.
|
|
21
|
+
5. **Signature check:** JSDoc/docstring vs real function signature.
|
|
22
|
+
6. **Cross-doc consistency:** README vs CONTRIBUTING vs inline vs API docs.
|
|
23
|
+
7. **Link/asset check:** internal links, anchors, referenced files resolve.
|
|
24
|
+
|
|
25
|
+
## Discovery commands
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Glob: **/*.md **/docs/**
|
|
29
|
+
Glob: **/.env.example
|
|
30
|
+
Read: package.json scripts
|
|
31
|
+
Shell: npm run <cli> -- --help (when safe)
|
|
32
|
+
Grep: "@param|@returns" glob "*.{ts,tsx,js,py}"
|
|
33
|
+
Glob: **/openapi.* **/swagger.*
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Guardrails (research-backed)
|
|
37
|
+
|
|
38
|
+
- **Docs-as-code:** doc updates in same PR as behavior change
|
|
39
|
+
- PR checklist: "did behavior change? update doc in this PR"
|
|
40
|
+
- CI: correlate onboarding docs vs `.env.example` + CLI help
|
|
41
|
+
- Auto-generate API reference from OpenAPI/source where possible
|
|
42
|
+
- Hand-written = *why*; generated = *what*
|
|
43
|
+
- `llms.txt` for external AI-readable docs when applicable
|