opencode-skills-collection 3.1.12 → 3.1.14
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/README.md +4 -6
- package/bundled-skills/.antigravity-install-manifest.json +195 -1
- package/bundled-skills/ab-testing/SKILL.md +368 -0
- package/bundled-skills/ab-testing/evals/evals.json +105 -0
- package/bundled-skills/ab-testing/references/sample-size-guide.md +263 -0
- package/bundled-skills/ab-testing/references/test-templates.md +277 -0
- package/bundled-skills/accint-commitments/SKILL.md +32 -0
- package/bundled-skills/accint-frames/SKILL.md +35 -0
- package/bundled-skills/accint-solve/SKILL.md +22 -192
- package/bundled-skills/add-app-clip/SKILL.md +297 -0
- package/bundled-skills/add-app-clip/agents/openai.yaml +4 -0
- package/bundled-skills/add-app-clip/references/native-module.md +96 -0
- package/bundled-skills/agent-memory/SKILL.md +84 -0
- package/bundled-skills/alternatives-pages/README.md +46 -0
- package/bundled-skills/alternatives-pages/SKILL.md +376 -0
- package/bundled-skills/analytics/SKILL.md +324 -0
- package/bundled-skills/analytics/evals/evals.json +90 -0
- package/bundled-skills/analytics/references/event-library.md +260 -0
- package/bundled-skills/analytics/references/ga4-implementation.md +300 -0
- package/bundled-skills/analytics/references/gtm-implementation.md +390 -0
- package/bundled-skills/anti-deception/SKILL.md +50 -0
- package/bundled-skills/api-analyzer/SKILL.md +101 -0
- package/bundled-skills/api-and-interface-design/SKILL.md +307 -0
- package/bundled-skills/api-designer/SKILL.md +167 -0
- package/bundled-skills/api-integration/SKILL.md +175 -0
- package/bundled-skills/api-onboarding/README.md +47 -0
- package/bundled-skills/api-onboarding/SKILL.md +473 -0
- package/bundled-skills/api-sdk-generator/SKILL.md +223 -0
- package/bundled-skills/appium-skill/SKILL.md +317 -0
- package/bundled-skills/applicationinsights-web-ts/SKILL.md +477 -0
- package/bundled-skills/automated-triage/SKILL.md +189 -0
- package/bundled-skills/aws-agentic-ai/SKILL.md +141 -0
- package/bundled-skills/aws-cdk-development/SKILL.md +275 -0
- package/bundled-skills/aws-cost-operations/SKILL.md +273 -0
- package/bundled-skills/aws-mcp-setup/SKILL.md +192 -0
- package/bundled-skills/aws-serverless-eda/SKILL.md +394 -0
- package/bundled-skills/aws-sst-development/SKILL.md +175 -0
- package/bundled-skills/azure-ai-language-conversations-py/SKILL.md +112 -0
- package/bundled-skills/azure-servicebus-rust/SKILL.md +182 -0
- package/bundled-skills/azure-storage-queue-rust/SKILL.md +178 -0
- package/bundled-skills/baseline-ui/SKILL.md +15 -10
- package/bundled-skills/before-you-build/SKILL.md +111 -0
- package/bundled-skills/brooks-audit/SKILL.md +49 -0
- package/bundled-skills/brooks-audit/architecture-guide.md +195 -0
- package/bundled-skills/brooks-audit/onboarding-guide.md +89 -0
- package/bundled-skills/brooks-debt/SKILL.md +42 -0
- package/bundled-skills/brooks-debt/debt-guide.md +125 -0
- package/bundled-skills/brooks-harness/SKILL.md +139 -0
- package/bundled-skills/brooks-review/SKILL.md +42 -0
- package/bundled-skills/brooks-review/pr-review-guide.md +163 -0
- package/bundled-skills/brooks-sweep/SKILL.md +44 -0
- package/bundled-skills/brooks-sweep/sweep-guide.md +264 -0
- package/bundled-skills/brooks-test/SKILL.md +41 -0
- package/bundled-skills/brooks-test/test-guide.md +147 -0
- package/bundled-skills/bug-hunt-swarm/SKILL.md +189 -0
- package/bundled-skills/bug-hunt-swarm/agents/openai.yaml +4 -0
- package/bundled-skills/building-native-ui/SKILL.md +77 -18
- package/bundled-skills/building-native-ui/agents/openai.yaml +4 -0
- package/bundled-skills/building-native-ui/references/animations.md +220 -0
- package/bundled-skills/building-native-ui/references/controls.md +270 -0
- package/bundled-skills/building-native-ui/references/form-sheet.md +253 -0
- package/bundled-skills/building-native-ui/references/gradients.md +106 -0
- package/bundled-skills/building-native-ui/references/icons.md +213 -0
- package/bundled-skills/building-native-ui/references/media.md +198 -0
- package/bundled-skills/building-native-ui/references/route-structure.md +229 -0
- package/bundled-skills/building-native-ui/references/search.md +248 -0
- package/bundled-skills/building-native-ui/references/storage.md +121 -0
- package/bundled-skills/building-native-ui/references/tabs.md +433 -0
- package/bundled-skills/building-native-ui/references/toolbar-and-headers.md +284 -0
- package/bundled-skills/building-native-ui/references/visual-effects.md +197 -0
- package/bundled-skills/building-native-ui/references/webgpu-three.md +605 -0
- package/bundled-skills/building-native-ui/references/zoom-transitions.md +158 -0
- package/bundled-skills/changelog-updates/README.md +53 -0
- package/bundled-skills/changelog-updates/SKILL.md +552 -0
- package/bundled-skills/ci-cd-and-automation/SKILL.md +403 -0
- package/bundled-skills/claimable-postgres/SKILL.md +91 -59
- package/bundled-skills/co-marketing/SKILL.md +301 -0
- package/bundled-skills/co-marketing/evals/evals.json +84 -0
- package/bundled-skills/code-review-and-quality/SKILL.md +394 -0
- package/bundled-skills/code-showcase-core-components/SKILL.md +281 -0
- package/bundled-skills/code-showcase-react-ui-patterns/SKILL.md +306 -0
- package/bundled-skills/code-showcase-systematic-debugging/SKILL.md +167 -0
- package/bundled-skills/code-showcase-testing-patterns/SKILL.md +276 -0
- package/bundled-skills/code-simplification/SKILL.md +344 -0
- package/bundled-skills/community-building/README.md +102 -0
- package/bundled-skills/community-building/SKILL.md +415 -0
- package/bundled-skills/competitor-profiling/SKILL.md +427 -0
- package/bundled-skills/competitor-profiling/evals/evals.json +85 -0
- package/bundled-skills/competitor-profiling/references/templates.md +167 -0
- package/bundled-skills/competitor-profiling/references/tool-reference.md +179 -0
- package/bundled-skills/competitor-tracking/README.md +40 -0
- package/bundled-skills/competitor-tracking/SKILL.md +322 -0
- package/bundled-skills/context-engineering/SKILL.md +302 -0
- package/bundled-skills/cro/SKILL.md +202 -0
- package/bundled-skills/cro/evals/evals.json +111 -0
- package/bundled-skills/cro/references/experiments.md +248 -0
- package/bundled-skills/cro/references/form.md +422 -0
- package/bundled-skills/cron-doctor/scripts/cron-engine.js +10 -7
- package/bundled-skills/cucumber-skill/SKILL.md +235 -0
- package/bundled-skills/customer-research/SKILL.md +287 -0
- package/bundled-skills/customer-research/evals/evals.json +162 -0
- package/bundled-skills/customer-research/references/source-guides.md +401 -0
- package/bundled-skills/cypress-skill/SKILL.md +235 -0
- package/bundled-skills/debugging-and-error-recovery/SKILL.md +313 -0
- package/bundled-skills/debugging-code/SKILL.md +284 -0
- package/bundled-skills/debugging-code/references/advanced-techniques.md +50 -0
- package/bundled-skills/debugging-code/references/installing-debuggers.md +67 -0
- package/bundled-skills/debugging-code/scripts/install-dap.sh +87 -0
- package/bundled-skills/deprecation-and-migration/SKILL.md +219 -0
- package/bundled-skills/design-philosophy/SKILL.md +40 -0
- package/bundled-skills/design-philosophy/reference.md +19 -0
- package/bundled-skills/design-spatial/SKILL.md +271 -0
- package/bundled-skills/design-spatial/scripts/layout-audit.js +138 -0
- package/bundled-skills/design-system/SKILL.md +140 -0
- package/bundled-skills/design-system/references/motion-choreography.md +111 -0
- package/bundled-skills/design-thinking/SKILL.md +109 -0
- package/bundled-skills/design-ux/SKILL.md +75 -0
- package/bundled-skills/dev-to-hashnode/README.md +62 -0
- package/bundled-skills/dev-to-hashnode/SKILL.md +399 -0
- package/bundled-skills/developer-advocacy/README.md +102 -0
- package/bundled-skills/developer-advocacy/SKILL.md +423 -0
- package/bundled-skills/developer-audience-context/README.md +61 -0
- package/bundled-skills/developer-audience-context/SKILL.md +271 -0
- package/bundled-skills/developer-audience-context/references/example-apitest.md +175 -0
- package/bundled-skills/developer-audience-context/references/template.md +152 -0
- package/bundled-skills/developer-churn/README.md +80 -0
- package/bundled-skills/developer-churn/SKILL.md +652 -0
- package/bundled-skills/developer-listening/README.md +30 -0
- package/bundled-skills/developer-listening/SKILL.md +232 -0
- package/bundled-skills/developer-newsletter/README.md +84 -0
- package/bundled-skills/developer-newsletter/SKILL.md +376 -0
- package/bundled-skills/developer-onboarding/README.md +35 -0
- package/bundled-skills/developer-onboarding/SKILL.md +530 -0
- package/bundled-skills/developer-sandbox/README.md +47 -0
- package/bundled-skills/developer-sandbox/SKILL.md +504 -0
- package/bundled-skills/developer-seo/README.md +36 -0
- package/bundled-skills/developer-seo/SKILL.md +296 -0
- package/bundled-skills/developer-signup-flow/README.md +36 -0
- package/bundled-skills/developer-signup-flow/SKILL.md +397 -0
- package/bundled-skills/devrel-content/README.md +81 -0
- package/bundled-skills/devrel-content/SKILL.md +428 -0
- package/bundled-skills/dispatch/SKILL.md +130 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/faq.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +8 -8
- package/bundled-skills/docs/users/visual-guide.md +8 -8
- package/bundled-skills/docs-as-marketing/README.md +37 -0
- package/bundled-skills/docs-as-marketing/SKILL.md +398 -0
- package/bundled-skills/documentation-and-adrs/SKILL.md +291 -0
- package/bundled-skills/doubt-driven-development/SKILL.md +256 -0
- package/bundled-skills/eas-update-insights/SKILL.md +232 -0
- package/bundled-skills/eas-update-insights/agents/openai.yaml +4 -0
- package/bundled-skills/eas-update-insights/references/channel-insights-schema.md +47 -0
- package/bundled-skills/eas-update-insights/references/update-insights-schema.md +69 -0
- package/bundled-skills/expo-api-routes/SKILL.md +9 -5
- package/bundled-skills/expo-api-routes/agents/openai.yaml +4 -0
- package/bundled-skills/expo-brownfield/SKILL.md +71 -0
- package/bundled-skills/expo-brownfield/agents/openai.yaml +4 -0
- package/bundled-skills/expo-brownfield/references/brownfield-integrated.md +526 -0
- package/bundled-skills/expo-brownfield/references/brownfield-isolated.md +402 -0
- package/bundled-skills/expo-brownfield/references/comparison.md +63 -0
- package/bundled-skills/expo-brownfield/references/troubleshooting.md +88 -0
- package/bundled-skills/expo-cicd-workflows/SKILL.md +18 -16
- package/bundled-skills/expo-cicd-workflows/agents/openai.yaml +4 -0
- package/bundled-skills/expo-cicd-workflows/scripts/fetch.js +109 -0
- package/bundled-skills/expo-cicd-workflows/scripts/package.json +11 -0
- package/bundled-skills/expo-cicd-workflows/scripts/validate.js +84 -0
- package/bundled-skills/expo-deployment/SKILL.md +157 -53
- package/bundled-skills/expo-deployment/agents/openai.yaml +4 -0
- package/bundled-skills/expo-deployment/references/app-store-metadata.md +497 -0
- package/bundled-skills/expo-deployment/references/ios-app-store.md +371 -0
- package/bundled-skills/expo-deployment/references/play-store.md +246 -0
- package/bundled-skills/expo-deployment/references/testflight.md +58 -0
- package/bundled-skills/expo-deployment/references/workflows.md +160 -0
- package/bundled-skills/expo-dev-client/SKILL.md +25 -14
- package/bundled-skills/expo-dev-client/agents/openai.yaml +4 -0
- package/bundled-skills/expo-examples/SKILL.md +111 -0
- package/bundled-skills/expo-examples/references/catalog.md +105 -0
- package/bundled-skills/expo-module/SKILL.md +152 -0
- package/bundled-skills/expo-module/agents/openai.yaml +4 -0
- package/bundled-skills/expo-module/references/config-plugin.md +90 -0
- package/bundled-skills/expo-module/references/create-expo-module.md +206 -0
- package/bundled-skills/expo-module/references/lifecycle.md +127 -0
- package/bundled-skills/expo-module/references/module-config.md +48 -0
- package/bundled-skills/expo-module/references/native-module.md +286 -0
- package/bundled-skills/expo-module/references/native-view.md +171 -0
- package/bundled-skills/expo-observe/SKILL.md +44 -0
- package/bundled-skills/expo-observe/references/metrics.md +47 -0
- package/bundled-skills/expo-observe/references/queries.md +342 -0
- package/bundled-skills/expo-observe/references/setup.md +255 -0
- package/bundled-skills/expo-tailwind-setup/SKILL.md +13 -10
- package/bundled-skills/expo-tailwind-setup/agents/openai.yaml +4 -0
- package/bundled-skills/expo-ui/SKILL.md +61 -0
- package/bundled-skills/expo-ui/agents/openai.yaml +4 -0
- package/bundled-skills/expo-ui/references/drop-in-replacements.md +27 -0
- package/bundled-skills/expo-ui/references/jetpack-compose.md +73 -0
- package/bundled-skills/expo-ui/references/swift-ui.md +73 -0
- package/bundled-skills/expo-ui/references/universal.md +73 -0
- package/bundled-skills/expo-ui/scripts/list-components.js +193 -0
- package/bundled-skills/faf-context/SKILL.md +106 -0
- package/bundled-skills/faf-go/SKILL.md +336 -0
- package/bundled-skills/fixing-accessibility/SKILL.md +16 -5
- package/bundled-skills/fixing-metadata/SKILL.md +18 -8
- package/bundled-skills/fixing-motion-performance/SKILL.md +17 -6
- package/bundled-skills/formik-patterns/SKILL.md +379 -0
- package/bundled-skills/free-tier-strategy/README.md +39 -0
- package/bundled-skills/free-tier-strategy/SKILL.md +462 -0
- package/bundled-skills/frontend-architecture/SKILL.md +419 -0
- package/bundled-skills/frontend-data-contracts/SKILL.md +331 -0
- package/bundled-skills/frontend-observability/SKILL.md +434 -0
- package/bundled-skills/frontend-optimistic-mutations/SKILL.md +278 -0
- package/bundled-skills/frontend-seo/SKILL.md +710 -0
- package/bundled-skills/frontend-slides-frontend-slides/SKILL.md +397 -0
- package/bundled-skills/frontend-ui-engineering/SKILL.md +341 -0
- package/bundled-skills/gemini-api-dev/SKILL.md +96 -53
- package/bundled-skills/gemini-live-api-dev/SKILL.md +339 -0
- package/bundled-skills/gemini-omni-flash-api/SKILL.md +335 -0
- package/bundled-skills/gemini-omni-flash-api/scripts/upload_file.py +218 -0
- package/bundled-skills/gemini-omni-flash-api/scripts/video/generate_video.py +439 -0
- package/bundled-skills/gemini-omni-flash-api/scripts/video/inspect_video.py +197 -0
- package/bundled-skills/gemini-omni-flash-api/scripts/video/prep_video.py +255 -0
- package/bundled-skills/gh-image/SKILL.md +10 -2
- package/bundled-skills/git-workflow-and-versioning/SKILL.md +313 -0
- package/bundled-skills/github-presence/README.md +67 -0
- package/bundled-skills/github-presence/SKILL.md +484 -0
- package/bundled-skills/graphql-schema/SKILL.md +309 -0
- package/bundled-skills/hf-mcp/SKILL.md +195 -0
- package/bundled-skills/hf-mem/SKILL.md +92 -0
- package/bundled-skills/hugging-face-cli/SKILL.md +155 -115
- package/bundled-skills/hugging-face-community-evals/SKILL.md +14 -7
- package/bundled-skills/hugging-face-dataset-viewer/SKILL.md +30 -37
- package/bundled-skills/hugging-face-gradio/SKILL.md +14 -7
- package/bundled-skills/hugging-face-model-trainer/SKILL.md +42 -11
- package/bundled-skills/hugging-face-model-trainer/references/gguf_conversion.md +5 -0
- package/bundled-skills/hugging-face-model-trainer/scripts/convert_to_gguf.py +57 -51
- package/bundled-skills/hugging-face-model-trainer/scripts/hf_benchmarks.py +659 -0
- package/bundled-skills/hugging-face-paper-publisher/SKILL.md +13 -6
- package/bundled-skills/hugging-face-papers/SKILL.md +12 -5
- package/bundled-skills/hugging-face-trackio/SKILL.md +11 -5
- package/bundled-skills/hugging-face-vision-trainer/SKILL.md +11 -5
- package/bundled-skills/huggingface-best/SKILL.md +143 -0
- package/bundled-skills/huggingface-local-models/SKILL.md +130 -0
- package/bundled-skills/huggingface-local-models/references/hardware.md +38 -0
- package/bundled-skills/huggingface-local-models/references/hub-discovery.md +178 -0
- package/bundled-skills/huggingface-local-models/references/quantization.md +256 -0
- package/bundled-skills/huggingface-lora-space-builder/SKILL.md +409 -0
- package/bundled-skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
- package/bundled-skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
- package/bundled-skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
- package/bundled-skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
- package/bundled-skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
- package/bundled-skills/huggingface-lora-space-builder/references/tasks.md +124 -0
- package/bundled-skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +194 -0
- package/bundled-skills/huggingface-spaces/SKILL.md +247 -0
- package/bundled-skills/huggingface-spaces/references/buckets.md +89 -0
- package/bundled-skills/huggingface-spaces/references/debugging.md +234 -0
- package/bundled-skills/huggingface-spaces/references/gradio.md +171 -0
- package/bundled-skills/huggingface-spaces/references/grants.md +56 -0
- package/bundled-skills/huggingface-spaces/references/inference-providers.md +85 -0
- package/bundled-skills/huggingface-spaces/references/known-errors.md +232 -0
- package/bundled-skills/huggingface-spaces/references/requirements.md +153 -0
- package/bundled-skills/huggingface-spaces/references/zerogpu.md +276 -0
- package/bundled-skills/huggingface-tool-builder/SKILL.md +137 -0
- package/bundled-skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
- package/bundled-skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
- package/bundled-skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
- package/bundled-skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
- package/bundled-skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
- package/bundled-skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
- package/bundled-skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
- package/bundled-skills/huggingface-zerogpu/SKILL.md +306 -0
- package/bundled-skills/huggingface-zerogpu/references/concurrency.md +79 -0
- package/bundled-skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
- package/bundled-skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
- package/bundled-skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
- package/bundled-skills/hugo-to-markdown/SKILL.md +201 -0
- package/bundled-skills/hugo-to-markdown/agents/openai.yaml +4 -0
- package/bundled-skills/hugo-to-markdown/references/conversion-workflow.md +143 -0
- package/bundled-skills/hugo-to-markdown/references/front-matter-and-content.md +145 -0
- package/bundled-skills/hugo-to-markdown/references/links-assets-and-validation.md +106 -0
- package/bundled-skills/hugo-to-markdown/references/shortcodes-and-render-hooks.md +281 -0
- package/bundled-skills/hugo-to-markdown/scripts/check_standard_markdown.py +70 -0
- package/bundled-skills/hugo-to-markdown/scripts/inventory_hugo_rules.py +188 -0
- package/bundled-skills/hyperexecute-skill/SKILL.md +65 -0
- package/bundled-skills/idea-refine/SKILL.md +195 -0
- package/bundled-skills/idea-refine/examples.md +238 -0
- package/bundled-skills/idea-refine/frameworks.md +99 -0
- package/bundled-skills/idea-refine/refinement-criteria.md +113 -0
- package/bundled-skills/idea-refine/scripts/idea-refine.sh +15 -0
- package/bundled-skills/implement/SKILL.md +32 -0
- package/bundled-skills/incremental-implementation/SKILL.md +262 -0
- package/bundled-skills/jest-skill/SKILL.md +182 -0
- package/bundled-skills/junit-5-skill/SKILL.md +236 -0
- package/bundled-skills/logic-diff/SKILL.md +50 -0
- package/bundled-skills/logic-diff/logic-diff-guide.md +75 -0
- package/bundled-skills/logic-explain/SKILL.md +50 -0
- package/bundled-skills/logic-explain/logic-explain-guide.md +74 -0
- package/bundled-skills/logic-fix-all/SKILL.md +87 -0
- package/bundled-skills/logic-fix-all/guide-phases-0-2-consent-scope-health.md +113 -0
- package/bundled-skills/logic-fix-all/guide-phases-3-5-review-locate-clarify.md +47 -0
- package/bundled-skills/logic-fix-all/guide-phases-6-9-fix-iterate-report.md +143 -0
- package/bundled-skills/logic-fix-all/logic-fix-all-guide.md +60 -0
- package/bundled-skills/logic-locate/SKILL.md +52 -0
- package/bundled-skills/logic-locate/logic-locate-guide.md +85 -0
- package/bundled-skills/logic-review/SKILL.md +100 -0
- package/bundled-skills/logic-review/logic-review-guide.md +296 -0
- package/bundled-skills/longbridge-content/SKILL.md +87 -0
- package/bundled-skills/longbridge-fundamentals/SKILL.md +134 -0
- package/bundled-skills/longbridge-market-data/SKILL.md +129 -0
- package/bundled-skills/loopy/SKILL.md +289 -0
- package/bundled-skills/loopy/agents/openai.yaml +4 -0
- package/bundled-skills/loopy/references/audit.md +61 -0
- package/bundled-skills/loopy/references/debrief.md +43 -0
- package/bundled-skills/loopy/references/discover.md +72 -0
- package/bundled-skills/loopy/references/publish.md +65 -0
- package/bundled-skills/loopy/references/run.md +73 -0
- package/bundled-skills/marketing-plan/SKILL.md +283 -0
- package/bundled-skills/marketing-plan/evals/evals.json +96 -0
- package/bundled-skills/marketing-plan/references/aarrr-framework.md +180 -0
- package/bundled-skills/marketing-plan/references/budget-planning.md +168 -0
- package/bundled-skills/marketing-plan/references/client-types.md +373 -0
- package/bundled-skills/marketing-plan/references/current-state-rubric.md +255 -0
- package/bundled-skills/marketing-plan/references/example-quietude.md +972 -0
- package/bundled-skills/marketing-plan/references/funding-stage-unlocks.md +230 -0
- package/bundled-skills/marketing-plan/references/growth-patterns.md +148 -0
- package/bundled-skills/marketing-plan/references/idea-cross-reference.md +265 -0
- package/bundled-skills/marketing-plan/references/measurement-framework.md +213 -0
- package/bundled-skills/marketing-plan/references/methodology.md +363 -0
- package/bundled-skills/marketing-plan/references/ops-stack-mapping.md +197 -0
- package/bundled-skills/marketing-plan/references/plan-template.md +494 -0
- package/bundled-skills/marketing-plan/references/team-and-agency-model.md +278 -0
- package/bundled-skills/mdpr-skill/SKILL.md +233 -0
- package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +229 -0
- package/bundled-skills/monte-carlo-asset-health/SKILL.md +200 -0
- package/bundled-skills/monte-carlo-monitoring-advisor/SKILL.md +317 -0
- package/bundled-skills/monte-carlo-performance-diagnosis/SKILL.md +153 -0
- package/bundled-skills/monte-carlo-remediation/SKILL.md +359 -0
- package/bundled-skills/monte-carlo-storage-cost-analysis/SKILL.md +162 -0
- package/bundled-skills/native-data-fetching/SKILL.md +11 -8
- package/bundled-skills/native-data-fetching/agents/openai.yaml +4 -0
- package/bundled-skills/native-data-fetching/references/expo-router-loaders.md +341 -0
- package/bundled-skills/neon-ai-gateway/SKILL.md +237 -0
- package/bundled-skills/neon-functions/SKILL.md +465 -0
- package/bundled-skills/neon-functions/references/ai-sdk.md +139 -0
- package/bundled-skills/neon-functions/references/hono-websockets.md +145 -0
- package/bundled-skills/neon-functions/references/mastra-studio.md +132 -0
- package/bundled-skills/neon-functions/references/mcp.md +137 -0
- package/bundled-skills/neon-functions/references/sentry.md +131 -0
- package/bundled-skills/neon-functions/references/sse.md +143 -0
- package/bundled-skills/neon-object-storage/SKILL.md +200 -0
- package/bundled-skills/neon-postgres/SKILL.md +234 -469
- package/bundled-skills/neon-postgres-branches/SKILL.md +292 -0
- package/bundled-skills/neon-postgres-egress-optimizer/SKILL.md +256 -0
- package/bundled-skills/newman-cicd-integration/SKILL.md +330 -0
- package/bundled-skills/observability-and-instrumentation/SKILL.md +216 -0
- package/bundled-skills/odw/SKILL.md +57 -0
- package/bundled-skills/offers/SKILL.md +168 -0
- package/bundled-skills/offers/references/bonus-stacking.md +150 -0
- package/bundled-skills/offers/references/examples.md +215 -0
- package/bundled-skills/offers/references/guarantee-design.md +172 -0
- package/bundled-skills/offers/references/offer-anatomy.md +203 -0
- package/bundled-skills/offers/references/offer-formats.md +240 -0
- package/bundled-skills/offers/references/scarcity-urgency.md +175 -0
- package/bundled-skills/offers/references/value-equation.md +134 -0
- package/bundled-skills/onboarding/SKILL.md +235 -0
- package/bundled-skills/onboarding/evals/evals.json +92 -0
- package/bundled-skills/onboarding/references/experiments.md +258 -0
- package/bundled-skills/open-source-marketing/README.md +100 -0
- package/bundled-skills/open-source-marketing/SKILL.md +466 -0
- package/bundled-skills/openapi-spec-generator/SKILL.md +335 -0
- package/bundled-skills/performance-optimization/SKILL.md +363 -0
- package/bundled-skills/planning-and-task-breakdown/SKILL.md +240 -0
- package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/SKILL.md +170 -0
- package/bundled-skills/postgresql-cli/SKILL.md +498 -0
- package/bundled-skills/postgresql-cli/references/cli-options-and-variables.md +444 -0
- package/bundled-skills/postgresql-cli/references/meta-commands-core.md +466 -0
- package/bundled-skills/postgresql-cli/references/meta-commands-formatting.md +154 -0
- package/bundled-skills/postgresql-cli/references/meta-commands-inspection.md +134 -0
- package/bundled-skills/postgresql-cli/references/tips-advanced.md +289 -0
- package/bundled-skills/postgresql-cli/references/tips-workflows.md +407 -0
- package/bundled-skills/postman-collection-generator/SKILL.md +184 -0
- package/bundled-skills/postman-newman-automation/SKILL.md +311 -0
- package/bundled-skills/postman-openapi-converter/SKILL.md +174 -0
- package/bundled-skills/power-user-cultivation/README.md +78 -0
- package/bundled-skills/power-user-cultivation/SKILL.md +598 -0
- package/bundled-skills/pricing/SKILL.md +246 -0
- package/bundled-skills/pricing/evals/evals.json +90 -0
- package/bundled-skills/pricing/references/research-methods.md +152 -0
- package/bundled-skills/pricing/references/tier-structure.md +232 -0
- package/bundled-skills/privacy-mask/SKILL.md +96 -0
- package/bundled-skills/product-marketing/SKILL.md +256 -0
- package/bundled-skills/product-marketing/evals/evals.json +85 -0
- package/bundled-skills/public-relations/SKILL.md +146 -0
- package/bundled-skills/public-relations/references/journalist-pitching.md +368 -0
- package/bundled-skills/public-relations/references/media-outlets.md +207 -0
- package/bundled-skills/public-relations/references/newsjacking.md +218 -0
- package/bundled-skills/public-relations/references/press-platforms.md +188 -0
- package/bundled-skills/puppeteer-skill/SKILL.md +143 -0
- package/bundled-skills/pytest-skill/SKILL.md +201 -0
- package/bundled-skills/rclone-cli/SKILL.md +351 -0
- package/bundled-skills/rclone-cli/references/bisync.md +2003 -0
- package/bundled-skills/rclone-cli/references/cache.md +726 -0
- package/bundled-skills/rclone-cli/references/chunker.md +484 -0
- package/bundled-skills/rclone-cli/references/combine.md +187 -0
- package/bundled-skills/rclone-cli/references/commands/rclone.md +1169 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_about.md +89 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_archive.md +49 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_archive_create.md +97 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_archive_extract.md +83 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_archive_list.md +98 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_authorize.md +53 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_backend.md +82 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_bisync.md +160 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_cat.md +122 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_check.md +134 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_checksum.md +120 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_cleanup.md +49 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_completion.md +40 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_completion_bash.md +70 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_completion_fish.md +57 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_completion_powershell.md +49 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_completion_zsh.md +57 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config.md +56 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_create.md +150 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_delete.md +33 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_disconnect.md +40 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_dump.md +33 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_edit.md +39 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_encryption.md +36 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_encryption_check.md +43 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_encryption_remove.md +44 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_encryption_set.md +54 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_file.md +33 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_password.md +49 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_paths.md +33 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_providers.md +33 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_reconnect.md +40 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_redacted.md +45 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_show.md +33 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_string.md +57 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_touch.md +33 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_update.md +150 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_config_userinfo.md +38 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_convmv.md +440 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_copy.md +258 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_copyto.md +219 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_copyurl.md +91 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_cryptcheck.md +141 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_cryptdecode.md +51 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_dedupe.md +166 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_delete.md +117 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_deletefile.md +50 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_gendocs.md +39 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_gitannex.md +113 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_hashsum.md +120 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_link.md +60 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_listremotes.md +55 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_ls.md +114 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_lsd.md +127 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_lsf.md +241 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_lsjson.md +195 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_lsl.md +115 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_md5sum.md +96 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_mkdir.md +43 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_mount.md +1105 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_move.md +223 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_moveto.md +218 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_ncdu.md +140 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_nfsmount.md +1111 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_obscure.md +60 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_purge.md +58 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_rc.md +111 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_rcat.md +79 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_rcd.md +219 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_rmdir.md +52 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_rmdirs.md +66 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_selfupdate.md +91 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_serve.md +61 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_serve_dlna.md +619 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_serve_docker.md +653 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_serve_ftp.md +698 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_serve_http.md +837 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_serve_nfs.md +670 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_serve_restic.md +246 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_serve_s3.md +867 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_serve_sftp.md +745 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_serve_webdav.md +896 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_settier.md +63 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_sha1sum.md +99 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_size.md +94 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_sync.md +252 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_test.md +51 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_test_changenotify.md +34 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_test_histogram.md +41 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_test_info.md +51 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_test_makefile.md +39 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_test_makefiles.md +47 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_test_memory.md +33 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_test_speed.md +66 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_touch.md +110 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_tree.md +121 -0
- package/bundled-skills/rclone-cli/references/commands/rclone_version.md +83 -0
- package/bundled-skills/rclone-cli/references/crypt.md +844 -0
- package/bundled-skills/rclone-cli/references/docker.md +615 -0
- package/bundled-skills/rclone-cli/references/faq.md +364 -0
- package/bundled-skills/rclone-cli/references/filtering.md +991 -0
- package/bundled-skills/rclone-cli/references/flags.md +1221 -0
- package/bundled-skills/rclone-cli/references/hasher.md +383 -0
- package/bundled-skills/rclone-cli/references/install.md +686 -0
- package/bundled-skills/rclone-cli/references/overview.md +620 -0
- package/bundled-skills/rclone-cli/references/providers/alias.md +141 -0
- package/bundled-skills/rclone-cli/references/providers/archive.md +287 -0
- package/bundled-skills/rclone-cli/references/providers/azureblob.md +1140 -0
- package/bundled-skills/rclone-cli/references/providers/azurefiles.md +834 -0
- package/bundled-skills/rclone-cli/references/providers/b2.md +879 -0
- package/bundled-skills/rclone-cli/references/providers/box.md +573 -0
- package/bundled-skills/rclone-cli/references/providers/cloudinary.md +259 -0
- package/bundled-skills/rclone-cli/references/providers/compress.md +222 -0
- package/bundled-skills/rclone-cli/references/providers/drime.md +319 -0
- package/bundled-skills/rclone-cli/references/providers/drive.md +2032 -0
- package/bundled-skills/rclone-cli/references/providers/dropbox.md +661 -0
- package/bundled-skills/rclone-cli/references/providers/fichier.md +230 -0
- package/bundled-skills/rclone-cli/references/providers/filefabric.md +298 -0
- package/bundled-skills/rclone-cli/references/providers/filelu.md +256 -0
- package/bundled-skills/rclone-cli/references/providers/filen.md +243 -0
- package/bundled-skills/rclone-cli/references/providers/filescom.md +209 -0
- package/bundled-skills/rclone-cli/references/providers/ftp.md +621 -0
- package/bundled-skills/rclone-cli/references/providers/gofile.md +274 -0
- package/bundled-skills/rclone-cli/references/providers/googlecloudstorage.md +846 -0
- package/bundled-skills/rclone-cli/references/providers/googlephotos.md +676 -0
- package/bundled-skills/rclone-cli/references/providers/hdfs.md +263 -0
- package/bundled-skills/rclone-cli/references/providers/hidrive.md +487 -0
- package/bundled-skills/rclone-cli/references/providers/http.md +323 -0
- package/bundled-skills/rclone-cli/references/providers/iclouddrive.md +212 -0
- package/bundled-skills/rclone-cli/references/providers/internetarchive.md +355 -0
- package/bundled-skills/rclone-cli/references/providers/internxt.md +189 -0
- package/bundled-skills/rclone-cli/references/providers/jottacloud.md +604 -0
- package/bundled-skills/rclone-cli/references/providers/koofr.md +395 -0
- package/bundled-skills/rclone-cli/references/providers/linkbox.md +117 -0
- package/bundled-skills/rclone-cli/references/providers/local.md +749 -0
- package/bundled-skills/rclone-cli/references/providers/mailru.md +470 -0
- package/bundled-skills/rclone-cli/references/providers/mega.md +361 -0
- package/bundled-skills/rclone-cli/references/providers/memory.md +109 -0
- package/bundled-skills/rclone-cli/references/providers/netstorage.md +371 -0
- package/bundled-skills/rclone-cli/references/providers/onedrive.md +1322 -0
- package/bundled-skills/rclone-cli/references/providers/opendrive.md +222 -0
- package/bundled-skills/rclone-cli/references/providers/oracleobjectstorage/_index.md +932 -0
- package/bundled-skills/rclone-cli/references/providers/oracleobjectstorage/tutorial_mount.md +503 -0
- package/bundled-skills/rclone-cli/references/providers/pcloud.md +373 -0
- package/bundled-skills/rclone-cli/references/providers/pikpak.md +373 -0
- package/bundled-skills/rclone-cli/references/providers/pixeldrain.md +182 -0
- package/bundled-skills/rclone-cli/references/providers/premiumizeme.md +253 -0
- package/bundled-skills/rclone-cli/references/providers/protondrive.md +397 -0
- package/bundled-skills/rclone-cli/references/providers/putio.md +246 -0
- package/bundled-skills/rclone-cli/references/providers/qingstor.md +346 -0
- package/bundled-skills/rclone-cli/references/providers/quatrix.md +295 -0
- package/bundled-skills/rclone-cli/references/providers/s3.md +9687 -0
- package/bundled-skills/rclone-cli/references/providers/seafile.md +432 -0
- package/bundled-skills/rclone-cli/references/providers/sftp.md +1277 -0
- package/bundled-skills/rclone-cli/references/providers/shade.md +267 -0
- package/bundled-skills/rclone-cli/references/providers/sharefile.md +357 -0
- package/bundled-skills/rclone-cli/references/providers/sia.md +223 -0
- package/bundled-skills/rclone-cli/references/providers/smb.md +309 -0
- package/bundled-skills/rclone-cli/references/providers/storj.md +503 -0
- package/bundled-skills/rclone-cli/references/providers/sugarsync.md +305 -0
- package/bundled-skills/rclone-cli/references/providers/swift.md +744 -0
- package/bundled-skills/rclone-cli/references/providers/ulozto.md +283 -0
- package/bundled-skills/rclone-cli/references/providers/webdav.md +565 -0
- package/bundled-skills/rclone-cli/references/providers/yandex.md +283 -0
- package/bundled-skills/rclone-cli/references/providers/zoho.md +305 -0
- package/bundled-skills/rclone-cli/references/rc.md +2725 -0
- package/bundled-skills/rclone-cli/references/union.md +336 -0
- package/bundled-skills/rclone-cli/references/usage.md +3555 -0
- package/bundled-skills/rclone-cli/scripts/install.sh +204 -0
- package/bundled-skills/redis-cli/SKILL.md +392 -0
- package/bundled-skills/redis-cli/references/advanced-features.md +338 -0
- package/bundled-skills/redis-cli/references/connection-and-options.md +258 -0
- package/bundled-skills/redis-cli/references/data-query-commands.md +417 -0
- package/bundled-skills/redis-cli/references/inspection-and-monitoring.md +309 -0
- package/bundled-skills/redis-cli/references/key-management.md +252 -0
- package/bundled-skills/redis-cli/references/module-data-types.md +429 -0
- package/bundled-skills/redis-cli/references/server-administration.md +366 -0
- package/bundled-skills/repo-maintainer/SKILL.md +480 -0
- package/bundled-skills/resolving-merge-conflicts/SKILL.md +32 -0
- package/bundled-skills/review-and-simplify-changes/SKILL.md +202 -0
- package/bundled-skills/review-swarm/SKILL.md +185 -0
- package/bundled-skills/review-swarm/agents/openai.yaml +4 -0
- package/bundled-skills/riffkit/SKILL.md +122 -0
- package/bundled-skills/robot-framework-skill/SKILL.md +153 -0
- package/bundled-skills/sdk-dx/README.md +39 -0
- package/bundled-skills/sdk-dx/SKILL.md +541 -0
- package/bundled-skills/security-and-hardening/SKILL.md +474 -0
- package/bundled-skills/selenium-skill/SKILL.md +258 -0
- package/bundled-skills/shipping-and-launch/SKILL.md +323 -0
- package/bundled-skills/smartui-skill/SKILL.md +149 -0
- package/bundled-skills/source-driven-development/SKILL.md +207 -0
- package/bundled-skills/spec-driven-development/SKILL.md +217 -0
- package/bundled-skills/sql-sentinel/SKILL.md +12 -3
- package/bundled-skills/styleseed-design-review/SKILL.md +126 -0
- package/bundled-skills/supabase/CHANGELOG.md +35 -0
- package/bundled-skills/supabase/SKILL.md +149 -0
- package/bundled-skills/supabase/assets/feedback-issue-template.md +17 -0
- package/bundled-skills/supabase/references/skill-feedback.md +17 -0
- package/bundled-skills/supabase-postgres-best-practices/CHANGELOG.md +29 -0
- package/bundled-skills/supabase-postgres-best-practices/SKILL.md +74 -0
- package/bundled-skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
- package/bundled-skills/supabase-postgres-best-practices/references/_sections.md +39 -0
- package/bundled-skills/supabase-postgres-best-practices/references/_template.md +34 -0
- package/bundled-skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
- package/bundled-skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
- package/bundled-skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
- package/bundled-skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
- package/bundled-skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
- package/bundled-skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
- package/bundled-skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
- package/bundled-skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
- package/bundled-skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
- package/bundled-skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
- package/bundled-skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
- package/bundled-skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
- package/bundled-skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
- package/bundled-skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
- package/bundled-skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
- package/bundled-skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
- package/bundled-skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
- package/bundled-skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
- package/bundled-skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
- package/bundled-skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
- package/bundled-skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
- package/bundled-skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
- package/bundled-skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
- package/bundled-skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
- package/bundled-skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
- package/bundled-skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
- package/bundled-skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
- package/bundled-skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
- package/bundled-skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
- package/bundled-skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
- package/bundled-skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
- package/bundled-skills/swiftui-expert-skill/SKILL.md +175 -242
- package/bundled-skills/swiftui-expert-skill/references/accessibility-patterns.md +215 -0
- package/bundled-skills/swiftui-expert-skill/references/animation-advanced.md +428 -0
- package/bundled-skills/swiftui-expert-skill/references/animation-basics.md +284 -0
- package/bundled-skills/swiftui-expert-skill/references/animation-transitions.md +326 -0
- package/bundled-skills/swiftui-expert-skill/references/charts-accessibility.md +135 -0
- package/bundled-skills/swiftui-expert-skill/references/charts.md +602 -0
- package/bundled-skills/swiftui-expert-skill/references/focus-patterns.md +299 -0
- package/bundled-skills/swiftui-expert-skill/references/image-optimization.md +203 -0
- package/bundled-skills/swiftui-expert-skill/references/latest-apis.md +528 -0
- package/bundled-skills/swiftui-expert-skill/references/layout-best-practices.md +266 -0
- package/bundled-skills/swiftui-expert-skill/references/liquid-glass.md +423 -0
- package/bundled-skills/swiftui-expert-skill/references/list-patterns.md +467 -0
- package/bundled-skills/swiftui-expert-skill/references/localization.md +194 -0
- package/bundled-skills/swiftui-expert-skill/references/macos-scenes.md +318 -0
- package/bundled-skills/swiftui-expert-skill/references/macos-views.md +357 -0
- package/bundled-skills/swiftui-expert-skill/references/macos-window-styling.md +303 -0
- package/bundled-skills/swiftui-expert-skill/references/performance-patterns.md +417 -0
- package/bundled-skills/swiftui-expert-skill/references/previews.md +313 -0
- package/bundled-skills/swiftui-expert-skill/references/scroll-patterns.md +293 -0
- package/bundled-skills/swiftui-expert-skill/references/sheet-navigation-patterns.md +363 -0
- package/bundled-skills/swiftui-expert-skill/references/soft-deprecation.md +39 -0
- package/bundled-skills/swiftui-expert-skill/references/state-management.md +492 -0
- package/bundled-skills/swiftui-expert-skill/references/text-patterns.md +34 -0
- package/bundled-skills/swiftui-expert-skill/references/trace-analysis.md +295 -0
- package/bundled-skills/swiftui-expert-skill/references/trace-recording.md +134 -0
- package/bundled-skills/swiftui-expert-skill/references/view-structure.md +854 -0
- package/bundled-skills/swiftui-expert-skill/scripts/analyze_trace.py +301 -0
- package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/__init__.py +1 -0
- package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/causes.py +187 -0
- package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/correlate.py +179 -0
- package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/events.py +291 -0
- package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/hangs.py +108 -0
- package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/hitches.py +145 -0
- package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/summary.py +243 -0
- package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/swiftui.py +195 -0
- package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/time_profiler.py +135 -0
- package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/xctrace.py +117 -0
- package/bundled-skills/swiftui-expert-skill/scripts/instruments_parser/xml_utils.py +224 -0
- package/bundled-skills/swiftui-expert-skill/scripts/record_trace.py +252 -0
- package/bundled-skills/technical-tutorials/README.md +90 -0
- package/bundled-skills/technical-tutorials/SKILL.md +581 -0
- package/bundled-skills/test-framework-migration-skill/SKILL.md +122 -0
- package/bundled-skills/testng-skill/SKILL.md +163 -0
- package/bundled-skills/train-sentence-transformers/SKILL.md +118 -0
- package/bundled-skills/train-sentence-transformers/references/base_model_selection.md +79 -0
- package/bundled-skills/train-sentence-transformers/references/dataset_formats.md +128 -0
- package/bundled-skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
- package/bundled-skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
- package/bundled-skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
- package/bundled-skills/train-sentence-transformers/references/hardware_guide.md +105 -0
- package/bundled-skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
- package/bundled-skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
- package/bundled-skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
- package/bundled-skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
- package/bundled-skills/train-sentence-transformers/references/model_architectures.md +178 -0
- package/bundled-skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
- package/bundled-skills/train-sentence-transformers/references/training_args.md +269 -0
- package/bundled-skills/train-sentence-transformers/references/troubleshooting.md +225 -0
- package/bundled-skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
- package/bundled-skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
- package/bundled-skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
- package/bundled-skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
- package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
- package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
- package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
- package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
- package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
- package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
- package/bundled-skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
- package/bundled-skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
- package/bundled-skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
- package/bundled-skills/transformers-js/SKILL.md +83 -29
- package/bundled-skills/transformers-js/references/CONFIGURATION.md +55 -7
- package/bundled-skills/transformers-js/references/EXAMPLES.md +98 -83
- package/bundled-skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
- package/bundled-skills/transformers-js/references/PIPELINE_OPTIONS.md +31 -19
- package/bundled-skills/transformers-js/references/TEXT_GENERATION.md +18 -18
- package/bundled-skills/trl-training/SKILL.md +327 -0
- package/bundled-skills/tune-monitor/SKILL.md +268 -0
- package/bundled-skills/ui-a11y/SKILL.md +76 -68
- package/bundled-skills/ui-component/SKILL.md +54 -82
- package/bundled-skills/ui-lint/SKILL.md +111 -0
- package/bundled-skills/ui-motion/SKILL.md +181 -0
- package/bundled-skills/ui-page/SKILL.md +80 -90
- package/bundled-skills/ui-pattern/SKILL.md +50 -68
- package/bundled-skills/ui-review/SKILL.md +95 -77
- package/bundled-skills/ui-score/SKILL.md +145 -0
- package/bundled-skills/ui-setup/SKILL.md +196 -88
- package/bundled-skills/ui-skills-root/SKILL.md +72 -0
- package/bundled-skills/ui-tokens/SKILL.md +44 -52
- package/bundled-skills/ui-update/SKILL.md +167 -0
- package/bundled-skills/unslop-commit/SKILL.md +113 -0
- package/bundled-skills/unslop-file/SKILL.md +157 -0
- package/bundled-skills/unslop-review/SKILL.md +102 -0
- package/bundled-skills/update-swiftui-apis/SKILL.md +120 -0
- package/bundled-skills/update-swiftui-apis/references/scan-manifest.md +230 -0
- package/bundled-skills/upgrading-expo/SKILL.md +107 -82
- package/bundled-skills/upgrading-expo/agents/openai.yaml +4 -0
- package/bundled-skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
- package/bundled-skills/upgrading-expo/references/expo-av-to-video.md +160 -0
- package/bundled-skills/upgrading-expo/references/native-tabs.md +124 -0
- package/bundled-skills/upgrading-expo/references/new-architecture.md +79 -0
- package/bundled-skills/upgrading-expo/references/react-19.md +79 -0
- package/bundled-skills/upgrading-expo/references/react-compiler.md +59 -0
- package/bundled-skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
- package/bundled-skills/usage-based-pricing/README.md +40 -0
- package/bundled-skills/usage-based-pricing/SKILL.md +547 -0
- package/bundled-skills/use-dom/SKILL.md +428 -0
- package/bundled-skills/use-dom/agents/openai.yaml +4 -0
- package/bundled-skills/ux-audit/SKILL.md +112 -44
- package/bundled-skills/ux-copy/SKILL.md +105 -73
- package/bundled-skills/ux-feedback/SKILL.md +106 -58
- package/bundled-skills/ux-flow/SKILL.md +51 -50
- package/bundled-skills/vitest-skill/SKILL.md +165 -0
- package/bundled-skills/weaviate/references/environment_requirements.md +4 -1
- package/bundled-skills/weaviate/scripts/weaviate_conn.py +51 -17
- package/bundled-skills/webdriverio-skill/SKILL.md +157 -0
- package/bundled-skills/wjttc-builder/SKILL.md +355 -0
- package/bundled-skills/wjttc-tester/SKILL.md +190 -0
- package/bundled-skills/youtube-notetaker/scripts/serve.py +20 -11
- package/package.json +1 -1
- package/skills_index.json +4404 -146
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# PR Review Guide — Mode 1
|
|
2
|
+
|
|
3
|
+
**Purpose:** Analyze a code diff or specific files for decay risks that are directly visible
|
|
4
|
+
in the changed code. Every finding must follow the Iron Law: Symptom → Source → Consequence → Remedy.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Before You Start
|
|
9
|
+
|
|
10
|
+
**Auto-generated files:** If the diff contains generated files (protobuf stubs, OpenAPI clients,
|
|
11
|
+
ORM migrations, lock files, minified bundles), skip those files entirely. Generated code reflects
|
|
12
|
+
tool choices, not developer decisions. Note in the report which files were skipped and why.
|
|
13
|
+
|
|
14
|
+
**Scope calibration:** Adjust analysis depth based on PR size before starting.
|
|
15
|
+
|
|
16
|
+
| PR Size | Approach |
|
|
17
|
+
|---------|----------|
|
|
18
|
+
| < 50 lines | Focus on Steps 1–3 only; run Step 6a only if imports changed; run Step 6b if any class, method, or variable was renamed or introduced |
|
|
19
|
+
| 50–300 lines | Full process, all steps |
|
|
20
|
+
| > 300 lines | Full process; note in the Scope line that review is sampled — cover the highest-risk areas rather than every file |
|
|
21
|
+
|
|
22
|
+
For PRs > 500 lines: flag in the Summary that a PR this size is itself a Change Propagation signal. A change that cannot be reviewed in one pass suggests tangled responsibilities.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Analysis Process
|
|
27
|
+
|
|
28
|
+
Work through these seven steps in order. Do not skip steps.
|
|
29
|
+
|
|
30
|
+
### Step 1: Understand the scope
|
|
31
|
+
|
|
32
|
+
Read the diff or files and answer:
|
|
33
|
+
- What is the stated purpose of this change?
|
|
34
|
+
- Which files were modified?
|
|
35
|
+
- Flag immediately if the PR changes more than 10 unrelated files — that itself is a
|
|
36
|
+
🟡 Warning: Change Propagation (a PR that touches many unrelated things is a sign
|
|
37
|
+
that responsibilities are tangled).
|
|
38
|
+
|
|
39
|
+
### Step 2: Scan for Change Propagation
|
|
40
|
+
|
|
41
|
+
*Scan this first — it is the most visible risk in a diff.*
|
|
42
|
+
|
|
43
|
+
Look for:
|
|
44
|
+
- Does this change touch files in modules that have no conceptual connection to the stated purpose?
|
|
45
|
+
- Does any modified class change for more than one business reason in this diff?
|
|
46
|
+
- Does any method use more data from another class than from its own?
|
|
47
|
+
|
|
48
|
+
If the diff shows no cross-module changes beyond what the feature requires → skip, no finding.
|
|
49
|
+
|
|
50
|
+
### Step 3: Scan for Cognitive Overload
|
|
51
|
+
|
|
52
|
+
Look for:
|
|
53
|
+
- Are any new or modified functions longer than 20 lines?
|
|
54
|
+
- Is there nesting deeper than 3 levels in new or modified code?
|
|
55
|
+
- Are there more than 4 parameters in any new function signature?
|
|
56
|
+
- Are there magic numbers or unexplained constants in new code?
|
|
57
|
+
- Do new variable or function names require reading the implementation to understand?
|
|
58
|
+
- Are there train-wreck chains (3+ method calls chained)?
|
|
59
|
+
|
|
60
|
+
### Step 4: Scan for Knowledge Duplication
|
|
61
|
+
|
|
62
|
+
Look for:
|
|
63
|
+
- Does this change introduce logic that already exists elsewhere in the codebase?
|
|
64
|
+
- Does this change introduce a new name for a concept that already has a name?
|
|
65
|
+
- Does this change add a class to a hierarchy that has a parallel in another module?
|
|
66
|
+
|
|
67
|
+
### Step 5: Scan for Accidental Complexity
|
|
68
|
+
|
|
69
|
+
Look for:
|
|
70
|
+
- Does this change add an abstraction with only one concrete use?
|
|
71
|
+
- Does this change add a class that only wraps another class or delegates everything?
|
|
72
|
+
- Does this change add configuration options or extension points that serve no current requirement?
|
|
73
|
+
|
|
74
|
+
### Step 6a: Scan for Dependency Disorder
|
|
75
|
+
|
|
76
|
+
- Do any new imports create a dependency from a high-level module to a low-level one?
|
|
77
|
+
(e.g., domain service now imports a database driver or HTTP client)
|
|
78
|
+
- Do any new imports introduce a cycle between modules?
|
|
79
|
+
- Does any new interface force callers to depend on methods they do not use?
|
|
80
|
+
|
|
81
|
+
If no new imports and no structural changes → skip, no finding.
|
|
82
|
+
|
|
83
|
+
### Step 6b: Scan for Domain Model Distortion
|
|
84
|
+
|
|
85
|
+
- Do new class or variable names match the language the business uses for the same concept?
|
|
86
|
+
- Does any new class hold only data with no behavior (pure data bag), where behavior was expected?
|
|
87
|
+
- Does any new method put logic that belongs to the domain in a service or utility layer?
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Severity Calibration
|
|
92
|
+
|
|
93
|
+
Apply the Iron Law format from `../_shared/common.md`. Each risk in `../_shared/decay-risks.md` has its own Severity
|
|
94
|
+
Guide with numeric thresholds — use those as the primary reference. When a finding sits
|
|
95
|
+
on the boundary between two tiers, use this as a tiebreaker:
|
|
96
|
+
- 🔴 Critical — actively breaking velocity or creating production risk *today*
|
|
97
|
+
- 🟡 Warning — will if left unaddressed through the next few features
|
|
98
|
+
- 🟢 Suggestion — worth fixing when nearby, not urgent
|
|
99
|
+
|
|
100
|
+
When multiple findings exist, list Critical items first. If there are more than 5 findings,
|
|
101
|
+
add a one-line "Recommended fix order" at the end of the Findings section.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Step 7: Quick Test Check
|
|
106
|
+
|
|
107
|
+
*Run this last. Three signals only — this is not a full Mode 4 review.*
|
|
108
|
+
|
|
109
|
+
If the diff contains only generated files, configuration, or documentation with no
|
|
110
|
+
production logic changes → skip Step 7 entirely.
|
|
111
|
+
|
|
112
|
+
**Signal 1: Do tests exist for the changed behavior?**
|
|
113
|
+
|
|
114
|
+
- Does the diff modify production code?
|
|
115
|
+
- Are corresponding test file changes included in the diff?
|
|
116
|
+
- If new public behavior was added with no new tests:
|
|
117
|
+
→ 🟡 Warning: Coverage Illusion — new behavior is untested
|
|
118
|
+
→ Source: Feathers — Working Effectively with Legacy Code, Ch. 1
|
|
119
|
+
- If the change is a pure refactor and existing tests cover the behavior → no finding.
|
|
120
|
+
|
|
121
|
+
**Signal 2: Quick Mock Abuse sniff**
|
|
122
|
+
|
|
123
|
+
Only check if the diff includes test file changes.
|
|
124
|
+
|
|
125
|
+
- Is mock setup code in new/modified tests obviously longer than the test logic?
|
|
126
|
+
- Are the primary assertions `expect(mock).toHaveBeenCalledWith(...)` with no behavior verification?
|
|
127
|
+
- Does the diff add any methods to production classes that are only called from test files?
|
|
128
|
+
|
|
129
|
+
If any of these are true:
|
|
130
|
+
→ 🟡 Warning: Mock Abuse — test complexity exceeds behavior complexity
|
|
131
|
+
→ Source: Osherove — The Art of Unit Testing, mock usage guidelines
|
|
132
|
+
|
|
133
|
+
**Signal 3: Quick Test Obscurity sniff**
|
|
134
|
+
|
|
135
|
+
Only check if the diff includes test file changes.
|
|
136
|
+
|
|
137
|
+
- Do new test names express scenario and expected outcome?
|
|
138
|
+
(Pattern: `methodName_scenario_expectedResult` or equivalent)
|
|
139
|
+
- Are there new tests with multiple assertions and no message strings on any of them?
|
|
140
|
+
|
|
141
|
+
If test names are vague or assertions lack messages:
|
|
142
|
+
→ 🟢 Suggestion: Test Obscurity — test intent is unclear from the test name or assertions
|
|
143
|
+
→ Source: Meszaros — xUnit Test Patterns, Assertion Roulette (p.224)
|
|
144
|
+
|
|
145
|
+
**Output rule:**
|
|
146
|
+
|
|
147
|
+
If all three signals are clean → write no Test findings. Proceed directly to the report.
|
|
148
|
+
|
|
149
|
+
If findings exist → add them to the Findings section using the standard Iron Law format.
|
|
150
|
+
Label the risk as the test decay risk name (e.g., "Coverage Illusion", "Mock Abuse",
|
|
151
|
+
"Test Obscurity").
|
|
152
|
+
|
|
153
|
+
> **Note:** Step 7 is a fast check, not a full test audit. When systemic test problems
|
|
154
|
+
> are found, note in the Summary: "Consider running `/brooks-lint:brooks-test` for a
|
|
155
|
+
> complete test quality diagnosis."
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Output
|
|
160
|
+
|
|
161
|
+
Use the standard Report Template from `../_shared/common.md`.
|
|
162
|
+
Mode: PR Review
|
|
163
|
+
Scope: list the files reviewed (excluding skipped generated files).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brooks-sweep
|
|
3
|
+
description: "Full-sweep mode: runs a unified analysis across all quality dimensions — code decay, architecture, tech debt, and test quality — then applies fixes directly to the codebase. Safe changes are auto-applied; risky changes are confirmed before execution. Drawing on twelve classic..."
|
|
4
|
+
risk: unknown
|
|
5
|
+
source: https://github.com/hyhmrright/brooks-lint/tree/main/skills/brooks-sweep
|
|
6
|
+
source_repo: hyhmrright/brooks-lint
|
|
7
|
+
source_type: community
|
|
8
|
+
date_added: 2026-07-01
|
|
9
|
+
license: MIT
|
|
10
|
+
license_source: https://github.com/hyhmrright/brooks-lint/blob/main/LICENSE
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Brooks-Lint — Full Sweep & Auto-Fix
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
Use this skill when you need full-sweep mode: runs a unified analysis across all quality dimensions — code decay, architecture, tech debt, and test quality — then applies fixes directly to the codebase. Safe changes are auto-applied; risky changes are confirmed before execution. Drawing on twelve classic...
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## Setup
|
|
20
|
+
|
|
21
|
+
1. Read `../_shared/common.md` for the Iron Law, Project Config, Report Template, and Health Score rules
|
|
22
|
+
2. Read `../_shared/source-coverage.md` for book-level coverage, exceptions, and tradeoffs
|
|
23
|
+
3. Read `../_shared/decay-risks.md` for production risk symptom definitions
|
|
24
|
+
4. Read `../_shared/test-decay-risks.md` for test risk symptom definitions
|
|
25
|
+
5. Read `sweep-guide.md` in this directory for the unified scan and fix process
|
|
26
|
+
|
|
27
|
+
## Process
|
|
28
|
+
|
|
29
|
+
**If the user has not specified a project or directory:** apply Auto Scope Detection
|
|
30
|
+
from `../_shared/common.md` to determine the review scope before proceeding.
|
|
31
|
+
|
|
32
|
+
1. Show pre-flight consent notice and wait for the user's one-time approval (Step 0 of the guide)
|
|
33
|
+
2. Enumerate scope and initialize the `unresolvable` / `non_critical_rounds` / `fix_log` state (Step 1 of the guide)
|
|
34
|
+
3. Run the four dimensions in sequence — review, test, debt, audit — each scanning, classifying, applying Safe + Extended-Safe fixes, and verifying via the project test command (Steps 2–5 of the guide)
|
|
35
|
+
4. Iterate: re-scan modified files + same-module + static consumers; converge on a clean round, retire 3-retry failures to the `unresolvable` set, cap non-critical rounds at 3 (Step 6 of the guide)
|
|
36
|
+
5. Aggregate residual and unresolvable items and output the Full Sweep Report (Steps 7–8 of the guide)
|
|
37
|
+
|
|
38
|
+
**Mode line in report:** `Full Sweep`
|
|
39
|
+
|
|
40
|
+
## Limitations
|
|
41
|
+
|
|
42
|
+
- Use this skill only when the task clearly matches its upstream source and local project context.
|
|
43
|
+
- Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.
|
|
44
|
+
- Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
# Brooks-Lint — Full Sweep Guide
|
|
2
|
+
|
|
3
|
+
Sequential autonomous pipeline: **review → test → debt → audit**. Fixes findings
|
|
4
|
+
in place, iterates until clean or capped, reports residuals. One interaction point:
|
|
5
|
+
Step 0 (pre-flight consent) — after approval the pipeline runs hands-free until Step 8.
|
|
6
|
+
|
|
7
|
+
Every finding follows the Iron Law: **Symptom → Source → Consequence → Remedy**.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
### Step 0 — Pre-flight consent gate
|
|
12
|
+
|
|
13
|
+
**Goal:** State scope, cost, and irreversibility up front; get explicit consent
|
|
14
|
+
once so later steps never have to ask.
|
|
15
|
+
|
|
16
|
+
0a. Estimate the file count using `git ls-files | wc -l` if in a git repo, or
|
|
17
|
+
`find . -type f -not -path '*/.git/*' -not -path '*/node_modules/*' -not -path '*/.venv/*' -not -path '*/build/*' -not -path '*/dist/*' -not -path '*/vendor/*' -not -path '*/target/*' | wc -l` otherwise. Order-of-magnitude is enough.
|
|
18
|
+
|
|
19
|
+
0b. Show this notice verbatim with the estimate filled in. Do not paraphrase —
|
|
20
|
+
the user is agreeing to this exact scope.
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
⚠️ /brooks-sweep — Full Repository Sweep & Auto-Fix
|
|
24
|
+
|
|
25
|
+
Scope: Four analysis dimensions run in sequence — PR code decay (R1–R6),
|
|
26
|
+
test quality (T1–T6), tech debt, architecture. Edits are made in
|
|
27
|
+
place inside the detected project scope.
|
|
28
|
+
Estimated files in scope: ~N
|
|
29
|
+
|
|
30
|
+
Order: brooks-review → brooks-test → brooks-debt → brooks-audit.
|
|
31
|
+
Each dimension scans, queues, and fixes before the next starts.
|
|
32
|
+
|
|
33
|
+
Autonomy: Fully autonomous. Safe single-file fixes apply directly. Multi-file
|
|
34
|
+
fixes that have test coverage AND do not break a public interface
|
|
35
|
+
also apply directly. High-risk fixes (public API break, cross-module
|
|
36
|
+
structural change, or no test coverage) are NOT applied — they are
|
|
37
|
+
recorded in the residual report for human review.
|
|
38
|
+
|
|
39
|
+
Iteration: After each dimension pass, modified files + same-module + static
|
|
40
|
+
consumers are re-scanned. A finding that fails to fix 3 times is
|
|
41
|
+
retired to the unresolvable set and never re-queued. Non-critical
|
|
42
|
+
rounds cap at 3 iterations; critical findings iterate until
|
|
43
|
+
resolved or retired.
|
|
44
|
+
|
|
45
|
+
Git impact: The pipeline edits files. It does NOT commit, push, or amend.
|
|
46
|
+
If you have uncommitted work you want to preserve, commit or stash
|
|
47
|
+
first.
|
|
48
|
+
|
|
49
|
+
Proceed with full autonomous sweep? [Y/n]
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
0c. Parse the reply (first match wins, evaluate rules in order):
|
|
53
|
+
1. **Hard negation** (`no`, `n`, `abort`, `cancel`, `取消`, `不要`): abort with "Aborted before scan — no files modified."
|
|
54
|
+
2. **Consent** (`Y`, `yes`, `ok`, `sure`, `proceed`, `go`, `continue`, `好`, `好的`, `行`, `可以`): proceed to Step 1.
|
|
55
|
+
3. **Soft pause** (`wait`, `hold on`, `等一下`, `等我`, `let me`): acknowledge in one line ("Understood, waiting"), then wait for the user's next message and re-evaluate from rule 1.
|
|
56
|
+
4. **Question**: answer it, then re-show the notice once and wait for the next reply. If the next reply is not Consent (rule 2) — whether a second question, another pause, or anything else — abort with "Aborted — did not receive consent after clarification."
|
|
57
|
+
|
|
58
|
+
0d. After consent, do not ask further questions until Step 8.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
### Step 1 — Scope enumeration and state init
|
|
63
|
+
|
|
64
|
+
1a. Apply Auto Scope Detection from `../_shared/common.md` if the user did not
|
|
65
|
+
specify files or a directory. Otherwise honor the user's explicit scope.
|
|
66
|
+
|
|
67
|
+
1b. Read `.brooks-lint.yaml` from the project root if present. Apply `disable`,
|
|
68
|
+
`severity`, `ignore`, `focus`, and `custom_risks` per common.md. Record the
|
|
69
|
+
applied config values and reuse them across all iteration rounds — do not
|
|
70
|
+
re-read the file in Step 6 even if files were modified.
|
|
71
|
+
|
|
72
|
+
1c. Initialize pipeline state (persists across all rounds):
|
|
73
|
+
|
|
74
|
+
- **`unresolvable`** (set): findings retired after 3 failed attempts — keyed by `(file, line_range, risk_code)`; `signature` breaks ties. Never re-queued.
|
|
75
|
+
- **`non_critical_rounds`** (int, 0): incremented each round producing Warning/Suggestion; reset on clean round.
|
|
76
|
+
- **`fix_log`** (list): each fix with file, line range, risk code, description, and outcome (`applied` / `reverted` / `retired`).
|
|
77
|
+
|
|
78
|
+
1d. Record the final scope file list in the Fix Report output buffer for Step 8.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
### Step 2 — brooks-review pass (R1–R6 code decay)
|
|
83
|
+
|
|
84
|
+
Scan every file in scope against all R-series risks defined in
|
|
85
|
+
`../_shared/decay-risks.md`.
|
|
86
|
+
|
|
87
|
+
2a. For each R-risk, apply its symptom checklist. Record each hit as a finding
|
|
88
|
+
with: risk code, file + approximate line range, Symptom, Source,
|
|
89
|
+
Consequence, Remedy, Severity (Critical / Warning / Suggestion), and
|
|
90
|
+
**Fix-Class** (see Step 2b).
|
|
91
|
+
|
|
92
|
+
2b. Assign Fix-Class per finding:
|
|
93
|
+
|
|
94
|
+
| Class | Criteria |
|
|
95
|
+
|-------|----------|
|
|
96
|
+
| **Safe** | Single-file AND fully local: rename a non-exported symbol, extract a constant, remove dead code, add a null guard at a leaf, add a test scaffold for an untested pure function. Any change that modifies or removes an exported symbol is NOT Safe even if in one file. |
|
|
97
|
+
| **Extended-Safe** | Multi-file but (a) a project test command exists and passes pre-fix, AND (b) the change does not rename, remove, or alter the signature of any publicly exported symbol, AND (c) touches ≤ 5 files in this pass. |
|
|
98
|
+
| **Residual** | Public API break, cross-service boundary change, no test coverage to fall back on, or remedy ambiguous. NOT applied — carried to the Step 8 residual report. |
|
|
99
|
+
|
|
100
|
+
2c. Skip any finding that matches an entry in the `unresolvable` set.
|
|
101
|
+
|
|
102
|
+
2d. Apply every Safe and Extended-Safe fix in this dimension, lowest risk
|
|
103
|
+
within each severity tier first. For each fix: Edit or Write, then append
|
|
104
|
+
one row to `fix_log` with outcome `applied`. If two fixes touch overlapping
|
|
105
|
+
line ranges in the same file, apply higher-severity first, re-read the file,
|
|
106
|
+
then apply the next.
|
|
107
|
+
|
|
108
|
+
2e. After all fixes in this dimension, run the project test/lint command if one
|
|
109
|
+
exists (`package.json` scripts, `pytest`, `cargo test`, `go test ./...`, etc.).
|
|
110
|
+
If tests fail: revert fixes from this dimension in reverse order one at a
|
|
111
|
+
time, re-running the test command after each revert, until tests pass.
|
|
112
|
+
Mark each reverted fix with outcome `reverted` in `fix_log` and promote the
|
|
113
|
+
finding to **Residual**. If no test command is found, note this once in the
|
|
114
|
+
report and continue.
|
|
115
|
+
|
|
116
|
+
2f. Record dimension summary: N scanned, M Safe applied, K Extended-Safe applied,
|
|
117
|
+
R reverted, P Residual.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### Step 3 — brooks-test pass (T1–T6 test decay)
|
|
122
|
+
|
|
123
|
+
Scan test files (and untested production code) against T-series risks defined
|
|
124
|
+
in `../_shared/test-decay-risks.md`.
|
|
125
|
+
|
|
126
|
+
Follow the same sub-steps as Step 2 (classify → apply → verify → summarize),
|
|
127
|
+
using T-prefix risk codes. For production files with no test coverage at all,
|
|
128
|
+
record as T5 (Coverage Illusion). A test scaffold that adds a pure-function test is
|
|
129
|
+
**Safe**; adding tests that require new test infrastructure is **Residual**.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### Step 4 — brooks-debt pass (tech debt accumulation)
|
|
134
|
+
|
|
135
|
+
Re-classify R-findings through a debt lens — same symptoms at accumulation scale:
|
|
136
|
+
repeated duplication, layered workarounds, stale `TODO`/`FIXME` clusters, dead
|
|
137
|
+
flags. Score each with **Pain (1–3) × Spread (1–3)**; total 7–9 = Critical,
|
|
138
|
+
4–6 = Warning, 1–3 = Suggestion. Apply a severity bump for pattern-level
|
|
139
|
+
occurrences (isolated Suggestion → 4+ modules Warning).
|
|
140
|
+
|
|
141
|
+
Follow the same sub-steps as Step 2. Debt findings often span multiple files
|
|
142
|
+
and are more likely to land in Extended-Safe or Residual than Safe.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### Step 5 — brooks-audit pass (architecture integrity)
|
|
147
|
+
|
|
148
|
+
Scan the full scope for architecture-level issues. The dependency-direction
|
|
149
|
+
symptoms (inverted dependencies, circular imports, cross-domain coupling) are
|
|
150
|
+
defined in `../_shared/decay-risks.md` Risk 5 — use that checklist. Step 5
|
|
151
|
+
additionally covers architecture-only concerns that R5 does not: missing
|
|
152
|
+
abstraction layers, god modules, leaked infrastructure inside domain code,
|
|
153
|
+
and seam-boundary violations.
|
|
154
|
+
|
|
155
|
+
Most architecture findings are **Residual** by definition — they require human
|
|
156
|
+
judgment on module boundaries. A few are Extended-Safe (e.g. extract a shared
|
|
157
|
+
constant used in 3+ modules into a new module that nothing else imports yet).
|
|
158
|
+
Do not auto-refactor module layouts, rename packages, or change public exports.
|
|
159
|
+
|
|
160
|
+
Follow the same sub-steps as Step 2.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
### Step 6 — Iteration loop
|
|
165
|
+
|
|
166
|
+
**Goal:** Re-scan what the fixes touched and converge. Stop on clean round,
|
|
167
|
+
cap, or no progress.
|
|
168
|
+
|
|
169
|
+
6a. Build the re-scan scope:
|
|
170
|
+
- every file modified in Steps 2–5 of the current round, PLUS
|
|
171
|
+
- every file in the same module as a modified file, PLUS
|
|
172
|
+
- every file that statically imports from a modified file.
|
|
173
|
+
|
|
174
|
+
Do not re-scan files whose dependencies were not touched. On monorepos
|
|
175
|
+
where a "module" may span hundreds of files, narrow the same-module bucket
|
|
176
|
+
to files that import from or are imported by a modified file (direct
|
|
177
|
+
dependency graph only).
|
|
178
|
+
|
|
179
|
+
6b. Re-run Steps 2–5 on the re-scan scope. For each new finding in this round:
|
|
180
|
+
- If it matches an entry in `unresolvable` → skip.
|
|
181
|
+
- Else if 🔴 Critical → queue and fix; Critical findings iterate until
|
|
182
|
+
resolved OR retired (3 failed attempts → `unresolvable`).
|
|
183
|
+
- Else 🟡 Warning / 🟢 Suggestion → queue and fix, subject to cap below.
|
|
184
|
+
|
|
185
|
+
6c. Classify the round after all fixes attempted:
|
|
186
|
+
- **Clean round** (no new findings outside `unresolvable`): pipeline
|
|
187
|
+
converged → proceed to Step 7.
|
|
188
|
+
- **Critical-only round**: do NOT increment `non_critical_rounds`; return
|
|
189
|
+
to 6a.
|
|
190
|
+
- **Mixed or non-critical round** (any Warning / Suggestion produced):
|
|
191
|
+
increment `non_critical_rounds` by 1. If it reaches the cap (default 3,
|
|
192
|
+
or `sweep.max_iterations` from `.brooks-lint.yaml`), proceed to Step 7
|
|
193
|
+
with remaining non-critical findings recorded as
|
|
194
|
+
`"Unresolved — iteration cap reached"`. Otherwise return to 6a.
|
|
195
|
+
|
|
196
|
+
6d. Fix-retry rule: if a single finding fails verification (Step 2e) 3 times
|
|
197
|
+
across any combination of rounds, retire it to `unresolvable` with reason
|
|
198
|
+
`"3-retry budget exhausted"` and stop attempting it.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
### Step 7 — Residual aggregation
|
|
203
|
+
|
|
204
|
+
Collect everything that was NOT fixed in place, de-duplicated:
|
|
205
|
+
|
|
206
|
+
- All Residual-class findings from Steps 2–5 (first round + re-scan rounds)
|
|
207
|
+
- All `unresolvable` entries with their retirement reason
|
|
208
|
+
- All iteration-cap residuals from Step 6c
|
|
209
|
+
|
|
210
|
+
Sort Critical → Warning → Suggestion. Within each severity, list file path,
|
|
211
|
+
risk code, Symptom (one line), Remedy (one line), and the reason it was not
|
|
212
|
+
applied (`public API break` / `no test coverage` / `3-retry budget` /
|
|
213
|
+
`iteration cap`).
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
### Step 8 — Sweep report
|
|
218
|
+
|
|
219
|
+
Output the final report. Use the standard Report Template from
|
|
220
|
+
`../_shared/common.md` with these additions:
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
# Brooks-Lint — Full Sweep Report
|
|
224
|
+
Mode: Full Sweep | Scope: <files or directory>
|
|
225
|
+
Config: .brooks-lint.yaml applied (N risks disabled, M paths ignored) # omit if no config
|
|
226
|
+
|
|
227
|
+
## Dimension Summary
|
|
228
|
+
| Dimension | Scanned | Safe Applied | Extended Applied | Reverted | Residual |
|
|
229
|
+
|-----------|---------|--------------|------------------|----------|----------|
|
|
230
|
+
| Review (R1–R6) | ... | ... | ... | ... | ... |
|
|
231
|
+
| Test (T1–T6) | ... | ... | ... | ... | ... |
|
|
232
|
+
| Debt | ... | ... | ... | ... | ... |
|
|
233
|
+
| Audit | ... | ... | ... | ... | ... |
|
|
234
|
+
|
|
235
|
+
## Iteration History
|
|
236
|
+
Round 1: <classification — clean / critical-only / mixed>, <N> new findings
|
|
237
|
+
Round 2: ...
|
|
238
|
+
Stopped at: clean round | iteration cap | no outstanding criticals
|
|
239
|
+
|
|
240
|
+
## Fix Log
|
|
241
|
+
| # | File | Lines | Risk | Outcome | Change |
|
|
242
|
+
|---|------|-------|------|----------|--------|
|
|
243
|
+
| 1 | ... | ... | R2 | applied | Extract repeated constant |
|
|
244
|
+
| 2 | ... | ... | T4 | reverted | Test regression; promoted to Residual |
|
|
245
|
+
...
|
|
246
|
+
|
|
247
|
+
## Health Score Delta
|
|
248
|
+
Before: <estimated score>/100 → After: <estimated score>/100
|
|
249
|
+
(Re-run /brooks-health for an exact recalculation.)
|
|
250
|
+
|
|
251
|
+
## Residual Items (<K> not applied)
|
|
252
|
+
<Iron Law entries, sorted Critical → Suggestion, with "Not applied because: ..." line>
|
|
253
|
+
|
|
254
|
+
## Summary
|
|
255
|
+
- Total findings detected: <N>
|
|
256
|
+
- Fixed this sweep: <M>
|
|
257
|
+
- Residual (needs human review): <K>
|
|
258
|
+
- Unresolvable (3-retry exhausted): <U>
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
If there are zero residual items and zero unresolvable entries, end with:
|
|
262
|
+
**"Sweep complete — codebase is clean."**
|
|
263
|
+
|
|
264
|
+
**Mode line in report:** `Full Sweep`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brooks-test
|
|
3
|
+
description: "Test quality review drawing on twelve classic engineering books — with primary focus on xUnit Test Patterns, The Art of Unit Testing, How Google Tests Software, and Working Effectively with Legacy Code — that diagnoses structural problems in an existing test suite: brittleness, mock..."
|
|
4
|
+
risk: unknown
|
|
5
|
+
source: https://github.com/hyhmrright/brooks-lint/tree/main/skills/brooks-test
|
|
6
|
+
source_repo: hyhmrright/brooks-lint
|
|
7
|
+
source_type: community
|
|
8
|
+
date_added: 2026-07-01
|
|
9
|
+
license: MIT
|
|
10
|
+
license_source: https://github.com/hyhmrright/brooks-lint/blob/main/LICENSE
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Brooks-Lint — Test Quality Review
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
Use this skill when you need test quality review drawing on twelve classic engineering books — with primary focus on xUnit Test Patterns, The Art of Unit Testing, How Google Tests Software, and Working Effectively with Legacy Code — that diagnoses structural problems in an existing test suite: brittleness, mock...
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## Setup
|
|
20
|
+
|
|
21
|
+
1. Read `../_shared/common.md` for the Iron Law, Project Config, Report Template, and Health Score rules
|
|
22
|
+
2. Read `../_shared/source-coverage.md` for book-level coverage, exceptions, and tradeoffs
|
|
23
|
+
3. Read `../_shared/test-decay-risks.md` for test-space symptom definitions and source attributions
|
|
24
|
+
4. Read `test-guide.md` in this directory for the test quality review framework
|
|
25
|
+
|
|
26
|
+
## Process
|
|
27
|
+
|
|
28
|
+
**If the user has not shared test files or pointed to a test directory:** apply Auto
|
|
29
|
+
Scope Detection from `../_shared/common.md` to determine the review scope before proceeding.
|
|
30
|
+
|
|
31
|
+
1. Build the test suite map (guide's "Before You Start" section)
|
|
32
|
+
2. Scan for each test decay risk in the order specified (Steps 1–4 of the guide)
|
|
33
|
+
3. Apply the Iron Law and output using the Report Template (Step 5 of the guide)
|
|
34
|
+
|
|
35
|
+
**Mode line in report:** `Test Quality Review`
|
|
36
|
+
|
|
37
|
+
## Limitations
|
|
38
|
+
|
|
39
|
+
- Use this skill only when the task clearly matches its upstream source and local project context.
|
|
40
|
+
- Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.
|
|
41
|
+
- Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Test Quality Review Guide — Mode 4
|
|
2
|
+
|
|
3
|
+
**Purpose:** Diagnose the health of a test suite using six test-space decay risks.
|
|
4
|
+
Every finding must follow the Iron Law: Symptom → Source → Consequence → Remedy.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Before You Start: Build the Test Suite Map
|
|
9
|
+
|
|
10
|
+
Before scanning for any risk, map the current test suite structure:
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
Unit tests: X files, ~N tests
|
|
14
|
+
Integration tests: X files, ~N tests
|
|
15
|
+
E2E tests: X files, ~N tests
|
|
16
|
+
Ratio: Unit X% : Integration X% : E2E X%
|
|
17
|
+
Coverage areas: [modules with tests] vs [modules without tests]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
If you cannot access test files directly, ask the user **one question** — choose the
|
|
21
|
+
most relevant:
|
|
22
|
+
1. "Which module is hardest to test or has the least coverage?"
|
|
23
|
+
2. "When you make a change, how often do unrelated tests break?"
|
|
24
|
+
3. "Is there a part of the codebase your team avoids touching because it has no tests?"
|
|
25
|
+
|
|
26
|
+
After one answer, proceed. Do not ask more than one question.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Analysis Process
|
|
31
|
+
|
|
32
|
+
Work through these five steps in order.
|
|
33
|
+
|
|
34
|
+
### Step 1: Scan for Test Obscurity
|
|
35
|
+
|
|
36
|
+
*Scan this first — the most visible risk and the one that determines whether the suite
|
|
37
|
+
is maintainable at all.*
|
|
38
|
+
|
|
39
|
+
Look for:
|
|
40
|
+
- Read 5–10 test names at random: can each one communicate subject + scenario + expected
|
|
41
|
+
outcome without opening the test body?
|
|
42
|
+
- Are there tests where a failure gives no clue which behavior broke (multiple assertions,
|
|
43
|
+
no message strings)?
|
|
44
|
+
- Does any test depend on external state (files, database rows, env variables, shared mutable
|
|
45
|
+
fixtures) that is invisible from within the test body?
|
|
46
|
+
- Is there a single massive setUp or beforeEach that every test inherits regardless of
|
|
47
|
+
what it actually needs?
|
|
48
|
+
|
|
49
|
+
If all test names are clear and setups are minimal → no finding.
|
|
50
|
+
|
|
51
|
+
### Step 2a: Scan for Test Brittleness
|
|
52
|
+
|
|
53
|
+
*Brittle tests break on refactors that do not change observable behavior — they test
|
|
54
|
+
implementation, not contracts.*
|
|
55
|
+
|
|
56
|
+
Look for:
|
|
57
|
+
- Ask (or check git history): did any recent refactor cause test failures with no
|
|
58
|
+
behavior change?
|
|
59
|
+
- Are there test methods where the name contains "and" or that assert on 3 or more
|
|
60
|
+
unrelated behaviors (Eager Test)?
|
|
61
|
+
- Do assertions specify mock call order or exact parameter values that are irrelevant
|
|
62
|
+
to the observable behavior?
|
|
63
|
+
- Are tests coupled to private methods or internal state directly?
|
|
64
|
+
|
|
65
|
+
If brittleness is systemic (most tests in the file break on a rename) → 🔴 Critical.
|
|
66
|
+
If isolated (1–2 brittle tests) → 🟢 Suggestion.
|
|
67
|
+
|
|
68
|
+
### Step 2b: Scan for Mock Abuse
|
|
69
|
+
|
|
70
|
+
*Mock Abuse produces tests that pass regardless of whether the real behavior is correct.
|
|
71
|
+
Scan this separately from brittleness — over-mocking is often the cause of brittleness,
|
|
72
|
+
but it is a distinct problem worth its own finding.*
|
|
73
|
+
|
|
74
|
+
**Sample 3–5 tests once for both steps 2a and 2b together** — read each test body and
|
|
75
|
+
check brittleness signals and mock-setup ratio in the same pass, then write separate
|
|
76
|
+
findings if both problems are present.
|
|
77
|
+
|
|
78
|
+
Look for:
|
|
79
|
+
- Is mock setup code longer than the assertion logic in the sampled tests?
|
|
80
|
+
- Are the primary assertions `expect(mock).toHaveBeenCalledWith(...)` rather than
|
|
81
|
+
assertions on outputs, state, or observable events?
|
|
82
|
+
- Are there methods in production classes that are only called from test files
|
|
83
|
+
(test-induced design damage)?
|
|
84
|
+
- Does any single test create more than 3 mock objects?
|
|
85
|
+
|
|
86
|
+
If mock setup-to-assertion ratio exceeds 3:1 → 🟡 Warning.
|
|
87
|
+
If production methods exist only for test access → 🔴 Critical (architecture is being
|
|
88
|
+
distorted by the test suite).
|
|
89
|
+
|
|
90
|
+
### Step 3: Scan for Test Duplication
|
|
91
|
+
|
|
92
|
+
Look for:
|
|
93
|
+
- Is the same setup block (same variables initialized the same way) repeated across
|
|
94
|
+
5 or more test files without a shared helper?
|
|
95
|
+
- Are there multiple tests that pass identical inputs and assert identical outputs
|
|
96
|
+
with no differentiation (Lazy Test)?
|
|
97
|
+
- Is the same business scenario covered at unit, integration, and E2E level with no
|
|
98
|
+
difference in what each layer is testing?
|
|
99
|
+
|
|
100
|
+
If duplication is systemic (10 or more instances) → Critical.
|
|
101
|
+
If localized (3–5 instances) → Warning.
|
|
102
|
+
|
|
103
|
+
### Step 4: Scan for Coverage Illusion and Architecture Mismatch
|
|
104
|
+
|
|
105
|
+
Look for Coverage Illusion:
|
|
106
|
+
- Pick the most recently modified core module. Are its error-handling branches and
|
|
107
|
+
null/boundary inputs covered by tests?
|
|
108
|
+
- Are there legacy areas (old functions, no test files nearby) that are actively
|
|
109
|
+
being changed?
|
|
110
|
+
- Do the tests assert on side effects (DB writes, events emitted, state transitions)
|
|
111
|
+
or only on return values?
|
|
112
|
+
|
|
113
|
+
**Characterization Test check:** If legacy code is being modified without existing tests,
|
|
114
|
+
the team needs Characterization Tests before making the change — not after. Look for
|
|
115
|
+
this pattern and flag it when absent.
|
|
116
|
+
|
|
117
|
+
A Characterization Test locks in current behavior (right or wrong) so future changes
|
|
118
|
+
do not silently regress it. Template:
|
|
119
|
+
```
|
|
120
|
+
test("characterize: [module].[method] given [input], returns [current output]") {
|
|
121
|
+
// Call the code under test with realistic inputs
|
|
122
|
+
// Assert on whatever it currently returns — even if you suspect the output is wrong
|
|
123
|
+
// Add a comment: "This captures current behavior, not necessarily correct behavior"
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
Source: Feathers — Working Effectively with Legacy Code, Ch. 13: Characterization Tests
|
|
127
|
+
|
|
128
|
+
Look for Architecture Mismatch:
|
|
129
|
+
- Compare the suite map from the start: is the ratio close to 70% unit / 20% integration / 10% E2E?
|
|
130
|
+
- Are high-risk modules tested at higher density than trivial utilities?
|
|
131
|
+
|
|
132
|
+
**Test suite performance:** A slow test suite is a first-class maintainability risk — it
|
|
133
|
+
breaks the fast-feedback loop and causes developers to skip running tests locally.
|
|
134
|
+
- If the full suite runtime is known and > 10 minutes → 🟡 Warning
|
|
135
|
+
- If the full suite runtime is > 30 minutes or unknown → 🔴 Critical (unknown suite time
|
|
136
|
+
means nobody is running it regularly)
|
|
137
|
+
- If tests that could be unit tests are integration tests, that is a Performance Mismatch:
|
|
138
|
+
each misclassified test adds seconds of avoidable wait time
|
|
139
|
+
|
|
140
|
+
Source: Meszaros — xUnit Test Patterns, Slow Tests (p. 253)
|
|
141
|
+
|
|
142
|
+
### Step 5: Apply Iron Law, Output Report
|
|
143
|
+
|
|
144
|
+
Apply the Iron Law format from `../_shared/common.md` to each finding.
|
|
145
|
+
|
|
146
|
+
Use the standard Report Template. Mode: Test Quality Review.
|
|
147
|
+
Include the Test Suite Map as a code block immediately before the `## Findings` heading, labeled "Test Suite Map".
|