@ruaruababa/vibe-kit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CATALOG.md +317 -0
- package/README.md +121 -0
- package/aliases.json +65 -0
- package/bin/vibe.js +2 -0
- package/bundles.json +265 -0
- package/catalog.json +1560 -0
- package/dist/antigravity-skills/bin/cli.js +438 -0
- package/dist/antigravity-skills/lib/skill-utils.js +158 -0
- package/dist/antigravity-skills/scripts/build-catalog.js +305 -0
- package/dist/antigravity-skills/scripts/normalize-frontmatter.js +144 -0
- package/dist/antigravity-skills/scripts/validate-skills.js +230 -0
- package/dist/bin/vibe.js +2 -0
- package/dist/dist/src/cli/index.js +26 -0
- package/dist/lib/skill-utils.js +158 -0
- package/dist/scripts/build-catalog.js +50 -0
- package/dist/scripts/normalize-frontmatter.js +144 -0
- package/dist/scripts/validate-skills.js +56 -0
- package/dist/src/cli/index.js +146 -0
- package/dist/src/types/index.js +13 -0
- package/dist/src/utils/fs.js +1 -0
- package/package.json +43 -0
- package/skills/accessibility-compliance-accessibility-audit/SKILL.md +42 -0
- package/skills/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +502 -0
- package/skills/agent-orchestration-improve-agent/SKILL.md +349 -0
- package/skills/agent-orchestration-multi-agent-optimize/SKILL.md +239 -0
- package/skills/agent-orchestrator/SKILL.md +24 -0
- package/skills/ai-engineer/SKILL.md +171 -0
- package/skills/airflow-dag-patterns/SKILL.md +41 -0
- package/skills/airflow-dag-patterns/resources/implementation-playbook.md +509 -0
- package/skills/angular-migration/SKILL.md +428 -0
- package/skills/anti-reversing-techniques/SKILL.md +42 -0
- package/skills/anti-reversing-techniques/resources/implementation-playbook.md +539 -0
- package/skills/api-design-principles/SKILL.md +37 -0
- package/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/skills/api-design-principles/resources/implementation-playbook.md +513 -0
- package/skills/api-documenter/SKILL.md +184 -0
- package/skills/api-testing-observability-api-mock/SKILL.md +46 -0
- package/skills/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
- package/skills/application-performance-performance-optimization/SKILL.md +154 -0
- package/skills/architect-review/SKILL.md +174 -0
- package/skills/architecture-decision-records/SKILL.md +441 -0
- package/skills/architecture-patterns/SKILL.md +37 -0
- package/skills/architecture-patterns/resources/implementation-playbook.md +479 -0
- package/skills/arm-cortex-expert/SKILL.md +306 -0
- package/skills/async-python-patterns/SKILL.md +39 -0
- package/skills/async-python-patterns/resources/implementation-playbook.md +678 -0
- package/skills/attack-tree-construction/SKILL.md +38 -0
- package/skills/attack-tree-construction/resources/implementation-playbook.md +671 -0
- package/skills/auth-implementation-patterns/SKILL.md +39 -0
- package/skills/auth-implementation-patterns/resources/implementation-playbook.md +618 -0
- package/skills/backend-architect/SKILL.md +333 -0
- package/skills/backend-development-feature-development/SKILL.md +180 -0
- package/skills/backend-security-coder/SKILL.md +156 -0
- package/skills/backtesting-frameworks/SKILL.md +39 -0
- package/skills/backtesting-frameworks/resources/implementation-playbook.md +647 -0
- package/skills/bash-defensive-patterns/SKILL.md +43 -0
- package/skills/bash-defensive-patterns/resources/implementation-playbook.md +517 -0
- package/skills/bash-pro/SKILL.md +310 -0
- package/skills/bats-testing-patterns/SKILL.md +34 -0
- package/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -0
- package/skills/bazel-build-optimization/SKILL.md +397 -0
- package/skills/billing-automation/SKILL.md +42 -0
- package/skills/billing-automation/resources/implementation-playbook.md +544 -0
- package/skills/binary-analysis-patterns/SKILL.md +450 -0
- package/skills/blockchain-developer/SKILL.md +208 -0
- package/skills/business-analyst/SKILL.md +182 -0
- package/skills/c-pro/SKILL.md +56 -0
- package/skills/c4-architecture-c4-architecture/SKILL.md +389 -0
- package/skills/c4-code/SKILL.md +244 -0
- package/skills/c4-component/SKILL.md +153 -0
- package/skills/c4-container/SKILL.md +171 -0
- package/skills/c4-context/SKILL.md +150 -0
- package/skills/changelog-automation/SKILL.md +38 -0
- package/skills/changelog-automation/resources/implementation-playbook.md +538 -0
- package/skills/cicd-automation-workflow-automate/SKILL.md +51 -0
- package/skills/cicd-automation-workflow-automate/resources/implementation-playbook.md +1333 -0
- package/skills/clean-markdown/SKILL.md +23 -0
- package/skills/cloud-architect/SKILL.md +135 -0
- package/skills/code-documentation-code-explain/SKILL.md +46 -0
- package/skills/code-documentation-code-explain/resources/implementation-playbook.md +802 -0
- package/skills/code-documentation-doc-generate/SKILL.md +48 -0
- package/skills/code-documentation-doc-generate/resources/implementation-playbook.md +640 -0
- package/skills/code-refactoring-context-restore/SKILL.md +179 -0
- package/skills/code-refactoring-refactor-clean/SKILL.md +51 -0
- package/skills/code-refactoring-refactor-clean/resources/implementation-playbook.md +879 -0
- package/skills/code-refactoring-tech-debt/SKILL.md +386 -0
- package/skills/code-review-ai-ai-review/SKILL.md +450 -0
- package/skills/code-review-excellence/SKILL.md +40 -0
- package/skills/code-review-excellence/resources/implementation-playbook.md +515 -0
- package/skills/code-reviewer/SKILL.md +178 -0
- package/skills/codebase-cleanup-deps-audit/SKILL.md +51 -0
- package/skills/codebase-cleanup-deps-audit/resources/implementation-playbook.md +766 -0
- package/skills/codebase-cleanup-refactor-clean/SKILL.md +51 -0
- package/skills/codebase-cleanup-refactor-clean/resources/implementation-playbook.md +879 -0
- package/skills/codebase-cleanup-tech-debt/SKILL.md +386 -0
- package/skills/competitive-landscape/SKILL.md +34 -0
- package/skills/competitive-landscape/resources/implementation-playbook.md +494 -0
- package/skills/comprehensive-review-full-review/SKILL.md +146 -0
- package/skills/comprehensive-review-pr-enhance/SKILL.md +46 -0
- package/skills/comprehensive-review-pr-enhance/resources/implementation-playbook.md +691 -0
- package/skills/conductor-implement/SKILL.md +388 -0
- package/skills/conductor-manage/SKILL.md +39 -0
- package/skills/conductor-manage/resources/implementation-playbook.md +1120 -0
- package/skills/conductor-new-track/SKILL.md +433 -0
- package/skills/conductor-revert/SKILL.md +372 -0
- package/skills/conductor-setup/SKILL.md +426 -0
- package/skills/conductor-status/SKILL.md +338 -0
- package/skills/conductor-validator/SKILL.md +62 -0
- package/skills/content-marketer/SKILL.md +170 -0
- package/skills/context-driven-development/SKILL.md +400 -0
- package/skills/context-management-context-restore/SKILL.md +179 -0
- package/skills/context-management-context-save/SKILL.md +177 -0
- package/skills/context-manager/SKILL.md +185 -0
- package/skills/cost-optimization/SKILL.md +286 -0
- package/skills/cpp-pro/SKILL.md +59 -0
- package/skills/cqrs-implementation/SKILL.md +35 -0
- package/skills/cqrs-implementation/resources/implementation-playbook.md +540 -0
- package/skills/csharp-pro/SKILL.md +59 -0
- package/skills/customer-support/SKILL.md +170 -0
- package/skills/data-engineer/SKILL.md +224 -0
- package/skills/data-engineering-data-driven-feature/SKILL.md +182 -0
- package/skills/data-engineering-data-pipeline/SKILL.md +201 -0
- package/skills/data-quality-frameworks/SKILL.md +40 -0
- package/skills/data-quality-frameworks/resources/implementation-playbook.md +573 -0
- package/skills/data-scientist/SKILL.md +199 -0
- package/skills/data-storytelling/SKILL.md +465 -0
- package/skills/database-admin/SKILL.md +165 -0
- package/skills/database-architect/SKILL.md +268 -0
- package/skills/database-cloud-optimization-cost-optimize/SKILL.md +44 -0
- package/skills/database-cloud-optimization-cost-optimize/resources/implementation-playbook.md +1441 -0
- package/skills/database-migration/SKILL.md +436 -0
- package/skills/database-migrations-migration-observability/SKILL.md +420 -0
- package/skills/database-migrations-sql-migrations/SKILL.md +53 -0
- package/skills/database-migrations-sql-migrations/resources/implementation-playbook.md +499 -0
- package/skills/database-optimizer/SKILL.md +167 -0
- package/skills/dbt-transformation-patterns/SKILL.md +34 -0
- package/skills/dbt-transformation-patterns/resources/implementation-playbook.md +547 -0
- package/skills/debugger/SKILL.md +49 -0
- package/skills/debugging-strategies/SKILL.md +34 -0
- package/skills/debugging-strategies/resources/implementation-playbook.md +511 -0
- package/skills/debugging-toolkit-smart-debug/SKILL.md +197 -0
- package/skills/defi-protocol-templates/SKILL.md +466 -0
- package/skills/dependency-management-deps-audit/SKILL.md +44 -0
- package/skills/dependency-management-deps-audit/resources/implementation-playbook.md +766 -0
- package/skills/dependency-upgrade/SKILL.md +421 -0
- package/skills/deployment-engineer/SKILL.md +170 -0
- package/skills/deployment-pipeline-design/SKILL.md +371 -0
- package/skills/deployment-validation-config-validate/SKILL.md +496 -0
- package/skills/devops-troubleshooter/SKILL.md +161 -0
- package/skills/distributed-debugging-debug-trace/SKILL.md +44 -0
- package/skills/distributed-debugging-debug-trace/resources/implementation-playbook.md +1307 -0
- package/skills/distributed-tracing/SKILL.md +450 -0
- package/skills/django-pro/SKILL.md +180 -0
- package/skills/docs-architect/SKILL.md +98 -0
- package/skills/documentation-generation-doc-generate/SKILL.md +48 -0
- package/skills/documentation-generation-doc-generate/resources/implementation-playbook.md +640 -0
- package/skills/dotnet-architect/SKILL.md +197 -0
- package/skills/dotnet-backend-patterns/SKILL.md +37 -0
- package/skills/dotnet-backend-patterns/assets/repository-template.cs +523 -0
- package/skills/dotnet-backend-patterns/assets/service-template.cs +336 -0
- package/skills/dotnet-backend-patterns/references/dapper-patterns.md +544 -0
- package/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +355 -0
- package/skills/dotnet-backend-patterns/resources/implementation-playbook.md +799 -0
- package/skills/dummy-skill/SKILL.md +5 -0
- package/skills/dx-optimizer/SKILL.md +83 -0
- package/skills/e2e-testing-patterns/SKILL.md +41 -0
- package/skills/e2e-testing-patterns/resources/implementation-playbook.md +531 -0
- package/skills/elixir-pro/SKILL.md +59 -0
- package/skills/embedding-strategies/SKILL.md +491 -0
- package/skills/employment-contract-templates/SKILL.md +39 -0
- package/skills/employment-contract-templates/resources/implementation-playbook.md +493 -0
- package/skills/error-debugging-error-analysis/SKILL.md +47 -0
- package/skills/error-debugging-error-analysis/resources/implementation-playbook.md +1143 -0
- package/skills/error-debugging-error-trace/SKILL.md +43 -0
- package/skills/error-debugging-error-trace/resources/implementation-playbook.md +1361 -0
- package/skills/error-debugging-multi-agent-review/SKILL.md +216 -0
- package/skills/error-detective/SKILL.md +53 -0
- package/skills/error-diagnostics-error-analysis/SKILL.md +47 -0
- package/skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +1143 -0
- package/skills/error-diagnostics-error-trace/SKILL.md +48 -0
- package/skills/error-diagnostics-error-trace/resources/implementation-playbook.md +1371 -0
- package/skills/error-diagnostics-smart-debug/SKILL.md +197 -0
- package/skills/error-handling-patterns/SKILL.md +35 -0
- package/skills/error-handling-patterns/resources/implementation-playbook.md +635 -0
- package/skills/event-sourcing-architect/SKILL.md +58 -0
- package/skills/event-store-design/SKILL.md +449 -0
- package/skills/fastapi-pro/SKILL.md +192 -0
- package/skills/fastapi-templates/SKILL.md +32 -0
- package/skills/fastapi-templates/resources/implementation-playbook.md +566 -0
- package/skills/final-test/SKILL.md +5 -0
- package/skills/firmware-analyst/SKILL.md +320 -0
- package/skills/flutter-expert/SKILL.md +200 -0
- package/skills/framework-migration-code-migrate/SKILL.md +48 -0
- package/skills/framework-migration-code-migrate/resources/implementation-playbook.md +1052 -0
- package/skills/framework-migration-deps-upgrade/SKILL.md +48 -0
- package/skills/framework-migration-deps-upgrade/resources/implementation-playbook.md +755 -0
- package/skills/framework-migration-legacy-modernize/SKILL.md +132 -0
- package/skills/frontend-developer/SKILL.md +171 -0
- package/skills/frontend-mobile-development-component-scaffold/SKILL.md +403 -0
- package/skills/frontend-mobile-security-xss-scan/SKILL.md +322 -0
- package/skills/frontend-security-coder/SKILL.md +170 -0
- package/skills/full-stack-orchestration-full-stack-feature/SKILL.md +135 -0
- package/skills/gdpr-data-handling/SKILL.md +33 -0
- package/skills/gdpr-data-handling/resources/implementation-playbook.md +615 -0
- package/skills/git-advanced-workflows/SKILL.md +412 -0
- package/skills/git-pr-workflows-git-workflow/SKILL.md +140 -0
- package/skills/git-pr-workflows-onboard/SKILL.md +416 -0
- package/skills/git-pr-workflows-pr-enhance/SKILL.md +48 -0
- package/skills/git-pr-workflows-pr-enhance/resources/implementation-playbook.md +701 -0
- package/skills/github-actions-templates/SKILL.md +345 -0
- package/skills/gitlab-ci-patterns/SKILL.md +283 -0
- package/skills/gitops-workflow/SKILL.md +303 -0
- package/skills/gitops-workflow/references/argocd-setup.md +134 -0
- package/skills/gitops-workflow/references/sync-policies.md +131 -0
- package/skills/go-concurrency-patterns/SKILL.md +33 -0
- package/skills/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
- package/skills/godot-gdscript-patterns/SKILL.md +33 -0
- package/skills/godot-gdscript-patterns/resources/implementation-playbook.md +804 -0
- package/skills/golang-pro/SKILL.md +179 -0
- package/skills/grafana-dashboards/SKILL.md +381 -0
- package/skills/graphql-architect/SKILL.md +182 -0
- package/skills/haskell-pro/SKILL.md +56 -0
- package/skills/helm-chart-scaffolding/SKILL.md +34 -0
- package/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
- package/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
- package/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
- package/skills/helm-chart-scaffolding/resources/implementation-playbook.md +543 -0
- package/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
- package/skills/hr-pro/SKILL.md +126 -0
- package/skills/hybrid-cloud-architect/SKILL.md +168 -0
- package/skills/hybrid-cloud-networking/SKILL.md +238 -0
- package/skills/hybrid-search-implementation/SKILL.md +32 -0
- package/skills/hybrid-search-implementation/resources/implementation-playbook.md +567 -0
- package/skills/incident-responder/SKILL.md +213 -0
- package/skills/incident-response-incident-response/SKILL.md +168 -0
- package/skills/incident-response-smart-fix/SKILL.md +29 -0
- package/skills/incident-response-smart-fix/resources/implementation-playbook.md +838 -0
- package/skills/incident-runbook-templates/SKILL.md +395 -0
- package/skills/ios-developer/SKILL.md +219 -0
- package/skills/istio-traffic-management/SKILL.md +337 -0
- package/skills/java-pro/SKILL.md +177 -0
- package/skills/javascript-pro/SKILL.md +57 -0
- package/skills/javascript-testing-patterns/SKILL.md +35 -0
- package/skills/javascript-testing-patterns/resources/implementation-playbook.md +1024 -0
- package/skills/javascript-typescript-typescript-scaffold/SKILL.md +361 -0
- package/skills/julia-pro/SKILL.md +209 -0
- package/skills/k8s-manifest-generator/SKILL.md +35 -0
- package/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
- package/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
- package/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
- package/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
- package/skills/k8s-manifest-generator/references/service-spec.md +724 -0
- package/skills/k8s-manifest-generator/resources/implementation-playbook.md +510 -0
- package/skills/k8s-security-policies/SKILL.md +346 -0
- package/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
- package/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
- package/skills/kpi-dashboard-design/SKILL.md +440 -0
- package/skills/kubernetes-architect/SKILL.md +170 -0
- package/skills/langchain-architecture/SKILL.md +350 -0
- package/skills/legacy-modernizer/SKILL.md +53 -0
- package/skills/legal-advisor/SKILL.md +70 -0
- package/skills/linkerd-patterns/SKILL.md +321 -0
- package/skills/llm-application-dev-ai-assistant/SKILL.md +35 -0
- package/skills/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
- package/skills/llm-application-dev-langchain-agent/SKILL.md +246 -0
- package/skills/llm-application-dev-prompt-optimize/SKILL.md +37 -0
- package/skills/llm-application-dev-prompt-optimize/resources/implementation-playbook.md +591 -0
- package/skills/llm-evaluation/SKILL.md +483 -0
- package/skills/machine-learning-ops-ml-pipeline/SKILL.md +314 -0
- package/skills/malware-analyst/SKILL.md +247 -0
- package/skills/market-sizing-analysis/SKILL.md +425 -0
- package/skills/market-sizing-analysis/examples/saas-market-sizing.md +349 -0
- package/skills/market-sizing-analysis/references/data-sources.md +360 -0
- package/skills/memory-forensics/SKILL.md +491 -0
- package/skills/memory-safety-patterns/SKILL.md +33 -0
- package/skills/memory-safety-patterns/resources/implementation-playbook.md +603 -0
- package/skills/mermaid-expert/SKILL.md +59 -0
- package/skills/microservices-patterns/SKILL.md +35 -0
- package/skills/microservices-patterns/resources/implementation-playbook.md +607 -0
- package/skills/minecraft-bukkit-pro/SKILL.md +126 -0
- package/skills/ml-engineer/SKILL.md +168 -0
- package/skills/ml-pipeline-workflow/SKILL.md +257 -0
- package/skills/mlops-engineer/SKILL.md +219 -0
- package/skills/mobile-developer/SKILL.md +205 -0
- package/skills/mobile-security-coder/SKILL.md +184 -0
- package/skills/modern-javascript-patterns/SKILL.md +35 -0
- package/skills/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
- package/skills/monorepo-architect/SKILL.md +61 -0
- package/skills/monorepo-management/SKILL.md +35 -0
- package/skills/monorepo-management/resources/implementation-playbook.md +621 -0
- package/skills/mtls-configuration/SKILL.md +359 -0
- package/skills/multi-cloud-architecture/SKILL.md +189 -0
- package/skills/multi-platform-apps-multi-platform/SKILL.md +203 -0
- package/skills/network-engineer/SKILL.md +169 -0
- package/skills/nextjs-app-router-patterns/SKILL.md +33 -0
- package/skills/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
- package/skills/nft-standards/SKILL.md +395 -0
- package/skills/node-expert/SKILL.md +23 -0
- package/skills/nodejs-backend-patterns/SKILL.md +35 -0
- package/skills/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
- package/skills/nx-workspace-patterns/SKILL.md +464 -0
- package/skills/observability-engineer/SKILL.md +237 -0
- package/skills/observability-monitoring-monitor-setup/SKILL.md +48 -0
- package/skills/observability-monitoring-monitor-setup/resources/implementation-playbook.md +505 -0
- package/skills/observability-monitoring-slo-implement/SKILL.md +43 -0
- package/skills/observability-monitoring-slo-implement/resources/implementation-playbook.md +1077 -0
- package/skills/on-call-handoff-patterns/SKILL.md +453 -0
- package/skills/openapi-spec-generation/SKILL.md +33 -0
- package/skills/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
- package/skills/payment-integration/SKILL.md +77 -0
- package/skills/paypal-integration/SKILL.md +479 -0
- package/skills/pci-compliance/SKILL.md +478 -0
- package/skills/performance-engineer/SKILL.md +180 -0
- package/skills/performance-testing-review-ai-review/SKILL.md +450 -0
- package/skills/performance-testing-review-multi-agent-review/SKILL.md +216 -0
- package/skills/php-pro/SKILL.md +63 -0
- package/skills/posix-shell-pro/SKILL.md +304 -0
- package/skills/postgresql/SKILL.md +230 -0
- package/skills/postmortem-writing/SKILL.md +386 -0
- package/skills/projection-patterns/SKILL.md +33 -0
- package/skills/projection-patterns/resources/implementation-playbook.md +501 -0
- package/skills/prometheus-configuration/SKILL.md +404 -0
- package/skills/prompt-engineer/SKILL.md +272 -0
- package/skills/prompt-engineering-patterns/SKILL.md +213 -0
- package/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
- package/skills/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
- package/skills/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
- package/skills/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
- package/skills/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
- package/skills/prompt-engineering-patterns/references/prompt-templates.md +470 -0
- package/skills/prompt-engineering-patterns/references/system-prompts.md +189 -0
- package/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
- package/skills/protocol-reverse-engineering/SKILL.md +29 -0
- package/skills/protocol-reverse-engineering/resources/implementation-playbook.md +509 -0
- package/skills/python-development-python-scaffold/SKILL.md +331 -0
- package/skills/python-packaging/SKILL.md +36 -0
- package/skills/python-packaging/resources/implementation-playbook.md +869 -0
- package/skills/python-performance-optimization/SKILL.md +36 -0
- package/skills/python-performance-optimization/resources/implementation-playbook.md +868 -0
- package/skills/python-pro/SKILL.md +158 -0
- package/skills/python-testing-patterns/SKILL.md +37 -0
- package/skills/python-testing-patterns/resources/implementation-playbook.md +906 -0
- package/skills/quant-analyst/SKILL.md +53 -0
- package/skills/rag-implementation/SKILL.md +421 -0
- package/skills/react-modernization/SKILL.md +34 -0
- package/skills/react-modernization/resources/implementation-playbook.md +512 -0
- package/skills/react-native-architecture/SKILL.md +33 -0
- package/skills/react-native-architecture/resources/implementation-playbook.md +670 -0
- package/skills/react-state-management/SKILL.md +441 -0
- package/skills/reference-builder/SKILL.md +188 -0
- package/skills/reverse-engineer/SKILL.md +173 -0
- package/skills/risk-manager/SKILL.md +61 -0
- package/skills/risk-metrics-calculation/SKILL.md +33 -0
- package/skills/risk-metrics-calculation/resources/implementation-playbook.md +554 -0
- package/skills/ruby-pro/SKILL.md +56 -0
- package/skills/rust-async-patterns/SKILL.md +33 -0
- package/skills/rust-async-patterns/resources/implementation-playbook.md +516 -0
- package/skills/rust-pro/SKILL.md +178 -0
- package/skills/saga-orchestration/SKILL.md +496 -0
- package/skills/sales-automator/SKILL.md +55 -0
- package/skills/sast-configuration/SKILL.md +212 -0
- package/skills/scala-pro/SKILL.md +82 -0
- package/skills/screen-reader-testing/SKILL.md +33 -0
- package/skills/screen-reader-testing/resources/implementation-playbook.md +544 -0
- package/skills/search-specialist/SKILL.md +80 -0
- package/skills/secrets-management/SKILL.md +364 -0
- package/skills/security-auditor/SKILL.md +169 -0
- package/skills/security-compliance-compliance-check/SKILL.md +55 -0
- package/skills/security-compliance-compliance-check/resources/implementation-playbook.md +963 -0
- package/skills/security-requirement-extraction/SKILL.md +33 -0
- package/skills/security-requirement-extraction/resources/implementation-playbook.md +676 -0
- package/skills/security-scanning-security-dependencies/SKILL.md +43 -0
- package/skills/security-scanning-security-dependencies/resources/implementation-playbook.md +544 -0
- package/skills/security-scanning-security-hardening/SKILL.md +147 -0
- package/skills/security-scanning-security-sast/SKILL.md +495 -0
- package/skills/seo-authority-builder/SKILL.md +136 -0
- package/skills/seo-cannibalization-detector/SKILL.md +123 -0
- package/skills/seo-content-auditor/SKILL.md +83 -0
- package/skills/seo-content-planner/SKILL.md +108 -0
- package/skills/seo-content-refresher/SKILL.md +118 -0
- package/skills/seo-content-writer/SKILL.md +96 -0
- package/skills/seo-keyword-strategist/SKILL.md +95 -0
- package/skills/seo-meta-optimizer/SKILL.md +92 -0
- package/skills/seo-snippet-hunter/SKILL.md +114 -0
- package/skills/seo-structure-architect/SKILL.md +108 -0
- package/skills/service-mesh-expert/SKILL.md +58 -0
- package/skills/service-mesh-observability/SKILL.md +395 -0
- package/skills/shellcheck-configuration/SKILL.md +466 -0
- package/skills/similarity-search-patterns/SKILL.md +33 -0
- package/skills/similarity-search-patterns/resources/implementation-playbook.md +557 -0
- package/skills/slo-implementation/SKILL.md +341 -0
- package/skills/solidity-security/SKILL.md +34 -0
- package/skills/solidity-security/resources/implementation-playbook.md +524 -0
- package/skills/spark-optimization/SKILL.md +427 -0
- package/skills/sql-optimization-patterns/SKILL.md +35 -0
- package/skills/sql-optimization-patterns/resources/implementation-playbook.md +504 -0
- package/skills/sql-pro/SKILL.md +173 -0
- package/skills/startup-analyst/SKILL.md +328 -0
- package/skills/startup-business-analyst-business-case/SKILL.md +487 -0
- package/skills/startup-business-analyst-financial-projections/SKILL.md +353 -0
- package/skills/startup-business-analyst-market-opportunity/SKILL.md +240 -0
- package/skills/startup-financial-modeling/SKILL.md +467 -0
- package/skills/startup-metrics-framework/SKILL.md +34 -0
- package/skills/startup-metrics-framework/resources/implementation-playbook.md +500 -0
- package/skills/stride-analysis-patterns/SKILL.md +33 -0
- package/skills/stride-analysis-patterns/resources/implementation-playbook.md +655 -0
- package/skills/stripe-integration/SKILL.md +454 -0
- package/skills/systems-programming-rust-project/SKILL.md +440 -0
- package/skills/tailwind-design-system/SKILL.md +33 -0
- package/skills/tailwind-design-system/resources/implementation-playbook.md +665 -0
- package/skills/tdd-orchestrator/SKILL.md +205 -0
- package/skills/tdd-workflows-tdd-cycle/SKILL.md +221 -0
- package/skills/tdd-workflows-tdd-green/SKILL.md +73 -0
- package/skills/tdd-workflows-tdd-green/resources/implementation-playbook.md +870 -0
- package/skills/tdd-workflows-tdd-red/SKILL.md +164 -0
- package/skills/tdd-workflows-tdd-refactor/SKILL.md +187 -0
- package/skills/team-collaboration-issue/SKILL.md +37 -0
- package/skills/team-collaboration-issue/resources/implementation-playbook.md +640 -0
- package/skills/team-collaboration-standup-notes/SKILL.md +44 -0
- package/skills/team-collaboration-standup-notes/resources/implementation-playbook.md +768 -0
- package/skills/team-composition-analysis/SKILL.md +413 -0
- package/skills/temporal-python-pro/SKILL.md +370 -0
- package/skills/temporal-python-testing/SKILL.md +170 -0
- package/skills/temporal-python-testing/resources/integration-testing.md +455 -0
- package/skills/temporal-python-testing/resources/local-setup.md +553 -0
- package/skills/temporal-python-testing/resources/replay-testing.md +462 -0
- package/skills/temporal-python-testing/resources/unit-testing.md +328 -0
- package/skills/terraform-module-library/SKILL.md +261 -0
- package/skills/terraform-module-library/references/aws-modules.md +63 -0
- package/skills/terraform-specialist/SKILL.md +166 -0
- package/skills/test-automator/SKILL.md +224 -0
- package/skills/threat-mitigation-mapping/SKILL.md +33 -0
- package/skills/threat-mitigation-mapping/resources/implementation-playbook.md +744 -0
- package/skills/threat-modeling-expert/SKILL.md +60 -0
- package/skills/track-management/SKILL.md +38 -0
- package/skills/track-management/resources/implementation-playbook.md +591 -0
- package/skills/turborepo-caching/SKILL.md +419 -0
- package/skills/tutorial-engineer/SKILL.md +139 -0
- package/skills/typescript-advanced-types/SKILL.md +35 -0
- package/skills/typescript-advanced-types/resources/implementation-playbook.md +716 -0
- package/skills/typescript-pro/SKILL.md +55 -0
- package/skills/ui-minimal/SKILL.md +23 -0
- package/skills/ui-ux-designer/SKILL.md +209 -0
- package/skills/ui-visual-validator/SKILL.md +214 -0
- package/skills/unit-testing-test-generate/SKILL.md +319 -0
- package/skills/unity-developer/SKILL.md +230 -0
- package/skills/unity-ecs-patterns/SKILL.md +33 -0
- package/skills/unity-ecs-patterns/resources/implementation-playbook.md +625 -0
- package/skills/uv-package-manager/SKILL.md +37 -0
- package/skills/uv-package-manager/resources/implementation-playbook.md +830 -0
- package/skills/vector-database-engineer/SKILL.md +60 -0
- package/skills/vector-index-tuning/SKILL.md +42 -0
- package/skills/vector-index-tuning/resources/implementation-playbook.md +507 -0
- package/skills/wcag-audit-patterns/SKILL.md +41 -0
- package/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
- package/skills/web3-testing/SKILL.md +427 -0
- package/skills/workflow-orchestration-patterns/SKILL.md +333 -0
- package/skills/workflow-patterns/SKILL.md +38 -0
- package/skills/workflow-patterns/resources/implementation-playbook.md +621 -0
|
@@ -0,0 +1,879 @@
|
|
|
1
|
+
# Refactor and Clean Code Implementation Playbook
|
|
2
|
+
|
|
3
|
+
This file contains detailed patterns, checklists, and code samples referenced by the skill.
|
|
4
|
+
|
|
5
|
+
## Instructions
|
|
6
|
+
|
|
7
|
+
### 1. Code Analysis
|
|
8
|
+
First, analyze the current code for:
|
|
9
|
+
- **Code Smells**
|
|
10
|
+
- Long methods/functions (>20 lines)
|
|
11
|
+
- Large classes (>200 lines)
|
|
12
|
+
- Duplicate code blocks
|
|
13
|
+
- Dead code and unused variables
|
|
14
|
+
- Complex conditionals and nested loops
|
|
15
|
+
- Magic numbers and hardcoded values
|
|
16
|
+
- Poor naming conventions
|
|
17
|
+
- Tight coupling between components
|
|
18
|
+
- Missing abstractions
|
|
19
|
+
|
|
20
|
+
- **SOLID Violations**
|
|
21
|
+
- Single Responsibility Principle violations
|
|
22
|
+
- Open/Closed Principle issues
|
|
23
|
+
- Liskov Substitution problems
|
|
24
|
+
- Interface Segregation concerns
|
|
25
|
+
- Dependency Inversion violations
|
|
26
|
+
|
|
27
|
+
- **Performance Issues**
|
|
28
|
+
- Inefficient algorithms (O(n²) or worse)
|
|
29
|
+
- Unnecessary object creation
|
|
30
|
+
- Memory leaks potential
|
|
31
|
+
- Blocking operations
|
|
32
|
+
- Missing caching opportunities
|
|
33
|
+
|
|
34
|
+
### 2. Refactoring Strategy
|
|
35
|
+
|
|
36
|
+
Create a prioritized refactoring plan:
|
|
37
|
+
|
|
38
|
+
**Immediate Fixes (High Impact, Low Effort)**
|
|
39
|
+
- Extract magic numbers to constants
|
|
40
|
+
- Improve variable and function names
|
|
41
|
+
- Remove dead code
|
|
42
|
+
- Simplify boolean expressions
|
|
43
|
+
- Extract duplicate code to functions
|
|
44
|
+
|
|
45
|
+
**Method Extraction**
|
|
46
|
+
```
|
|
47
|
+
# Before
|
|
48
|
+
def process_order(order):
|
|
49
|
+
# 50 lines of validation
|
|
50
|
+
# 30 lines of calculation
|
|
51
|
+
# 40 lines of notification
|
|
52
|
+
|
|
53
|
+
# After
|
|
54
|
+
def process_order(order):
|
|
55
|
+
validate_order(order)
|
|
56
|
+
total = calculate_order_total(order)
|
|
57
|
+
send_order_notifications(order, total)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Class Decomposition**
|
|
61
|
+
- Extract responsibilities to separate classes
|
|
62
|
+
- Create interfaces for dependencies
|
|
63
|
+
- Implement dependency injection
|
|
64
|
+
- Use composition over inheritance
|
|
65
|
+
|
|
66
|
+
**Pattern Application**
|
|
67
|
+
- Factory pattern for object creation
|
|
68
|
+
- Strategy pattern for algorithm variants
|
|
69
|
+
- Observer pattern for event handling
|
|
70
|
+
- Repository pattern for data access
|
|
71
|
+
- Decorator pattern for extending behavior
|
|
72
|
+
|
|
73
|
+
### 3. SOLID Principles in Action
|
|
74
|
+
|
|
75
|
+
Provide concrete examples of applying each SOLID principle:
|
|
76
|
+
|
|
77
|
+
**Single Responsibility Principle (SRP)**
|
|
78
|
+
```python
|
|
79
|
+
# BEFORE: Multiple responsibilities in one class
|
|
80
|
+
class UserManager:
|
|
81
|
+
def create_user(self, data):
|
|
82
|
+
# Validate data
|
|
83
|
+
# Save to database
|
|
84
|
+
# Send welcome email
|
|
85
|
+
# Log activity
|
|
86
|
+
# Update cache
|
|
87
|
+
pass
|
|
88
|
+
|
|
89
|
+
# AFTER: Each class has one responsibility
|
|
90
|
+
class UserValidator:
|
|
91
|
+
def validate(self, data): pass
|
|
92
|
+
|
|
93
|
+
class UserRepository:
|
|
94
|
+
def save(self, user): pass
|
|
95
|
+
|
|
96
|
+
class EmailService:
|
|
97
|
+
def send_welcome_email(self, user): pass
|
|
98
|
+
|
|
99
|
+
class UserActivityLogger:
|
|
100
|
+
def log_creation(self, user): pass
|
|
101
|
+
|
|
102
|
+
class UserService:
|
|
103
|
+
def __init__(self, validator, repository, email_service, logger):
|
|
104
|
+
self.validator = validator
|
|
105
|
+
self.repository = repository
|
|
106
|
+
self.email_service = email_service
|
|
107
|
+
self.logger = logger
|
|
108
|
+
|
|
109
|
+
def create_user(self, data):
|
|
110
|
+
self.validator.validate(data)
|
|
111
|
+
user = self.repository.save(data)
|
|
112
|
+
self.email_service.send_welcome_email(user)
|
|
113
|
+
self.logger.log_creation(user)
|
|
114
|
+
return user
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Open/Closed Principle (OCP)**
|
|
118
|
+
```python
|
|
119
|
+
# BEFORE: Modification required for new discount types
|
|
120
|
+
class DiscountCalculator:
|
|
121
|
+
def calculate(self, order, discount_type):
|
|
122
|
+
if discount_type == "percentage":
|
|
123
|
+
return order.total * 0.1
|
|
124
|
+
elif discount_type == "fixed":
|
|
125
|
+
return 10
|
|
126
|
+
elif discount_type == "tiered":
|
|
127
|
+
# More logic
|
|
128
|
+
pass
|
|
129
|
+
|
|
130
|
+
# AFTER: Open for extension, closed for modification
|
|
131
|
+
from abc import ABC, abstractmethod
|
|
132
|
+
|
|
133
|
+
class DiscountStrategy(ABC):
|
|
134
|
+
@abstractmethod
|
|
135
|
+
def calculate(self, order): pass
|
|
136
|
+
|
|
137
|
+
class PercentageDiscount(DiscountStrategy):
|
|
138
|
+
def __init__(self, percentage):
|
|
139
|
+
self.percentage = percentage
|
|
140
|
+
|
|
141
|
+
def calculate(self, order):
|
|
142
|
+
return order.total * self.percentage
|
|
143
|
+
|
|
144
|
+
class FixedDiscount(DiscountStrategy):
|
|
145
|
+
def __init__(self, amount):
|
|
146
|
+
self.amount = amount
|
|
147
|
+
|
|
148
|
+
def calculate(self, order):
|
|
149
|
+
return self.amount
|
|
150
|
+
|
|
151
|
+
class TieredDiscount(DiscountStrategy):
|
|
152
|
+
def calculate(self, order):
|
|
153
|
+
if order.total > 1000: return order.total * 0.15
|
|
154
|
+
if order.total > 500: return order.total * 0.10
|
|
155
|
+
return order.total * 0.05
|
|
156
|
+
|
|
157
|
+
class DiscountCalculator:
|
|
158
|
+
def calculate(self, order, strategy: DiscountStrategy):
|
|
159
|
+
return strategy.calculate(order)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Liskov Substitution Principle (LSP)**
|
|
163
|
+
```typescript
|
|
164
|
+
// BEFORE: Violates LSP - Square changes Rectangle behavior
|
|
165
|
+
class Rectangle {
|
|
166
|
+
constructor(protected width: number, protected height: number) {}
|
|
167
|
+
|
|
168
|
+
setWidth(width: number) { this.width = width; }
|
|
169
|
+
setHeight(height: number) { this.height = height; }
|
|
170
|
+
area(): number { return this.width * this.height; }
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
class Square extends Rectangle {
|
|
174
|
+
setWidth(width: number) {
|
|
175
|
+
this.width = width;
|
|
176
|
+
this.height = width; // Breaks LSP
|
|
177
|
+
}
|
|
178
|
+
setHeight(height: number) {
|
|
179
|
+
this.width = height;
|
|
180
|
+
this.height = height; // Breaks LSP
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// AFTER: Proper abstraction respects LSP
|
|
185
|
+
interface Shape {
|
|
186
|
+
area(): number;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
class Rectangle implements Shape {
|
|
190
|
+
constructor(private width: number, private height: number) {}
|
|
191
|
+
area(): number { return this.width * this.height; }
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
class Square implements Shape {
|
|
195
|
+
constructor(private side: number) {}
|
|
196
|
+
area(): number { return this.side * this.side; }
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Interface Segregation Principle (ISP)**
|
|
201
|
+
```java
|
|
202
|
+
// BEFORE: Fat interface forces unnecessary implementations
|
|
203
|
+
interface Worker {
|
|
204
|
+
void work();
|
|
205
|
+
void eat();
|
|
206
|
+
void sleep();
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
class Robot implements Worker {
|
|
210
|
+
public void work() { /* work */ }
|
|
211
|
+
public void eat() { /* robots don't eat! */ }
|
|
212
|
+
public void sleep() { /* robots don't sleep! */ }
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// AFTER: Segregated interfaces
|
|
216
|
+
interface Workable {
|
|
217
|
+
void work();
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
interface Eatable {
|
|
221
|
+
void eat();
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
interface Sleepable {
|
|
225
|
+
void sleep();
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
class Human implements Workable, Eatable, Sleepable {
|
|
229
|
+
public void work() { /* work */ }
|
|
230
|
+
public void eat() { /* eat */ }
|
|
231
|
+
public void sleep() { /* sleep */ }
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
class Robot implements Workable {
|
|
235
|
+
public void work() { /* work */ }
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Dependency Inversion Principle (DIP)**
|
|
240
|
+
```go
|
|
241
|
+
// BEFORE: High-level module depends on low-level module
|
|
242
|
+
type MySQLDatabase struct{}
|
|
243
|
+
|
|
244
|
+
func (db *MySQLDatabase) Save(data string) {}
|
|
245
|
+
|
|
246
|
+
type UserService struct {
|
|
247
|
+
db *MySQLDatabase // Tight coupling
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
func (s *UserService) CreateUser(name string) {
|
|
251
|
+
s.db.Save(name)
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// AFTER: Both depend on abstraction
|
|
255
|
+
type Database interface {
|
|
256
|
+
Save(data string)
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
type MySQLDatabase struct{}
|
|
260
|
+
func (db *MySQLDatabase) Save(data string) {}
|
|
261
|
+
|
|
262
|
+
type PostgresDatabase struct{}
|
|
263
|
+
func (db *PostgresDatabase) Save(data string) {}
|
|
264
|
+
|
|
265
|
+
type UserService struct {
|
|
266
|
+
db Database // Depends on abstraction
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
func NewUserService(db Database) *UserService {
|
|
270
|
+
return &UserService{db: db}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
func (s *UserService) CreateUser(name string) {
|
|
274
|
+
s.db.Save(name)
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### 4. Complete Refactoring Scenarios
|
|
279
|
+
|
|
280
|
+
**Scenario 1: Legacy Monolith to Clean Modular Architecture**
|
|
281
|
+
|
|
282
|
+
```python
|
|
283
|
+
# BEFORE: 500-line monolithic file
|
|
284
|
+
class OrderSystem:
|
|
285
|
+
def process_order(self, order_data):
|
|
286
|
+
# Validation (100 lines)
|
|
287
|
+
if not order_data.get('customer_id'):
|
|
288
|
+
return {'error': 'No customer'}
|
|
289
|
+
if not order_data.get('items'):
|
|
290
|
+
return {'error': 'No items'}
|
|
291
|
+
# Database operations mixed in (150 lines)
|
|
292
|
+
conn = mysql.connector.connect(host='localhost', user='root')
|
|
293
|
+
cursor = conn.cursor()
|
|
294
|
+
cursor.execute("INSERT INTO orders...")
|
|
295
|
+
# Business logic (100 lines)
|
|
296
|
+
total = 0
|
|
297
|
+
for item in order_data['items']:
|
|
298
|
+
total += item['price'] * item['quantity']
|
|
299
|
+
# Email notifications (80 lines)
|
|
300
|
+
smtp = smtplib.SMTP('smtp.gmail.com')
|
|
301
|
+
smtp.sendmail(...)
|
|
302
|
+
# Logging and analytics (70 lines)
|
|
303
|
+
log_file = open('/var/log/orders.log', 'a')
|
|
304
|
+
log_file.write(f"Order processed: {order_data}")
|
|
305
|
+
|
|
306
|
+
# AFTER: Clean, modular architecture
|
|
307
|
+
# domain/entities.py
|
|
308
|
+
from dataclasses import dataclass
|
|
309
|
+
from typing import List
|
|
310
|
+
from decimal import Decimal
|
|
311
|
+
|
|
312
|
+
@dataclass
|
|
313
|
+
class OrderItem:
|
|
314
|
+
product_id: str
|
|
315
|
+
quantity: int
|
|
316
|
+
price: Decimal
|
|
317
|
+
|
|
318
|
+
@dataclass
|
|
319
|
+
class Order:
|
|
320
|
+
customer_id: str
|
|
321
|
+
items: List[OrderItem]
|
|
322
|
+
|
|
323
|
+
@property
|
|
324
|
+
def total(self) -> Decimal:
|
|
325
|
+
return sum(item.price * item.quantity for item in self.items)
|
|
326
|
+
|
|
327
|
+
# domain/repositories.py
|
|
328
|
+
from abc import ABC, abstractmethod
|
|
329
|
+
|
|
330
|
+
class OrderRepository(ABC):
|
|
331
|
+
@abstractmethod
|
|
332
|
+
def save(self, order: Order) -> str: pass
|
|
333
|
+
|
|
334
|
+
@abstractmethod
|
|
335
|
+
def find_by_id(self, order_id: str) -> Order: pass
|
|
336
|
+
|
|
337
|
+
# infrastructure/mysql_order_repository.py
|
|
338
|
+
class MySQLOrderRepository(OrderRepository):
|
|
339
|
+
def __init__(self, connection_pool):
|
|
340
|
+
self.pool = connection_pool
|
|
341
|
+
|
|
342
|
+
def save(self, order: Order) -> str:
|
|
343
|
+
with self.pool.get_connection() as conn:
|
|
344
|
+
cursor = conn.cursor()
|
|
345
|
+
cursor.execute(
|
|
346
|
+
"INSERT INTO orders (customer_id, total) VALUES (%s, %s)",
|
|
347
|
+
(order.customer_id, order.total)
|
|
348
|
+
)
|
|
349
|
+
return cursor.lastrowid
|
|
350
|
+
|
|
351
|
+
# application/validators.py
|
|
352
|
+
class OrderValidator:
|
|
353
|
+
def validate(self, order: Order) -> None:
|
|
354
|
+
if not order.customer_id:
|
|
355
|
+
raise ValueError("Customer ID is required")
|
|
356
|
+
if not order.items:
|
|
357
|
+
raise ValueError("Order must contain items")
|
|
358
|
+
if order.total <= 0:
|
|
359
|
+
raise ValueError("Order total must be positive")
|
|
360
|
+
|
|
361
|
+
# application/services.py
|
|
362
|
+
class OrderService:
|
|
363
|
+
def __init__(
|
|
364
|
+
self,
|
|
365
|
+
validator: OrderValidator,
|
|
366
|
+
repository: OrderRepository,
|
|
367
|
+
email_service: EmailService,
|
|
368
|
+
logger: Logger
|
|
369
|
+
):
|
|
370
|
+
self.validator = validator
|
|
371
|
+
self.repository = repository
|
|
372
|
+
self.email_service = email_service
|
|
373
|
+
self.logger = logger
|
|
374
|
+
|
|
375
|
+
def process_order(self, order: Order) -> str:
|
|
376
|
+
self.validator.validate(order)
|
|
377
|
+
order_id = self.repository.save(order)
|
|
378
|
+
self.email_service.send_confirmation(order)
|
|
379
|
+
self.logger.info(f"Order {order_id} processed successfully")
|
|
380
|
+
return order_id
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
**Scenario 2: Code Smell Resolution Catalog**
|
|
384
|
+
|
|
385
|
+
```typescript
|
|
386
|
+
// SMELL: Long Parameter List
|
|
387
|
+
// BEFORE
|
|
388
|
+
function createUser(
|
|
389
|
+
firstName: string,
|
|
390
|
+
lastName: string,
|
|
391
|
+
email: string,
|
|
392
|
+
phone: string,
|
|
393
|
+
address: string,
|
|
394
|
+
city: string,
|
|
395
|
+
state: string,
|
|
396
|
+
zipCode: string
|
|
397
|
+
) {}
|
|
398
|
+
|
|
399
|
+
// AFTER: Parameter Object
|
|
400
|
+
interface UserData {
|
|
401
|
+
firstName: string;
|
|
402
|
+
lastName: string;
|
|
403
|
+
email: string;
|
|
404
|
+
phone: string;
|
|
405
|
+
address: Address;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
interface Address {
|
|
409
|
+
street: string;
|
|
410
|
+
city: string;
|
|
411
|
+
state: string;
|
|
412
|
+
zipCode: string;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
function createUser(userData: UserData) {}
|
|
416
|
+
|
|
417
|
+
// SMELL: Feature Envy (method uses another class's data more than its own)
|
|
418
|
+
// BEFORE
|
|
419
|
+
class Order {
|
|
420
|
+
calculateShipping(customer: Customer): number {
|
|
421
|
+
if (customer.isPremium) {
|
|
422
|
+
return customer.address.isInternational ? 0 : 5;
|
|
423
|
+
}
|
|
424
|
+
return customer.address.isInternational ? 20 : 10;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
// AFTER: Move method to the class it envies
|
|
429
|
+
class Customer {
|
|
430
|
+
calculateShippingCost(): number {
|
|
431
|
+
if (this.isPremium) {
|
|
432
|
+
return this.address.isInternational ? 0 : 5;
|
|
433
|
+
}
|
|
434
|
+
return this.address.isInternational ? 20 : 10;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
class Order {
|
|
439
|
+
calculateShipping(customer: Customer): number {
|
|
440
|
+
return customer.calculateShippingCost();
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// SMELL: Primitive Obsession
|
|
445
|
+
// BEFORE
|
|
446
|
+
function validateEmail(email: string): boolean {
|
|
447
|
+
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
let userEmail: string = "test@example.com";
|
|
451
|
+
|
|
452
|
+
// AFTER: Value Object
|
|
453
|
+
class Email {
|
|
454
|
+
private readonly value: string;
|
|
455
|
+
|
|
456
|
+
constructor(email: string) {
|
|
457
|
+
if (!this.isValid(email)) {
|
|
458
|
+
throw new Error("Invalid email format");
|
|
459
|
+
}
|
|
460
|
+
this.value = email;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
private isValid(email: string): boolean {
|
|
464
|
+
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
toString(): string {
|
|
468
|
+
return this.value;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
let userEmail = new Email("test@example.com"); // Validation automatic
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
### 5. Decision Frameworks
|
|
476
|
+
|
|
477
|
+
**Code Quality Metrics Interpretation Matrix**
|
|
478
|
+
|
|
479
|
+
| Metric | Good | Warning | Critical | Action |
|
|
480
|
+
|--------|------|---------|----------|--------|
|
|
481
|
+
| Cyclomatic Complexity | <10 | 10-15 | >15 | Split into smaller methods |
|
|
482
|
+
| Method Lines | <20 | 20-50 | >50 | Extract methods, apply SRP |
|
|
483
|
+
| Class Lines | <200 | 200-500 | >500 | Decompose into multiple classes |
|
|
484
|
+
| Test Coverage | >80% | 60-80% | <60% | Add unit tests immediately |
|
|
485
|
+
| Code Duplication | <3% | 3-5% | >5% | Extract common code |
|
|
486
|
+
| Comment Ratio | 10-30% | <10% or >50% | N/A | Improve naming or reduce noise |
|
|
487
|
+
| Dependency Count | <5 | 5-10 | >10 | Apply DIP, use facades |
|
|
488
|
+
|
|
489
|
+
**Refactoring ROI Analysis**
|
|
490
|
+
|
|
491
|
+
```
|
|
492
|
+
Priority = (Business Value × Technical Debt) / (Effort × Risk)
|
|
493
|
+
|
|
494
|
+
Business Value (1-10):
|
|
495
|
+
- Critical path code: 10
|
|
496
|
+
- Frequently changed: 8
|
|
497
|
+
- User-facing features: 7
|
|
498
|
+
- Internal tools: 5
|
|
499
|
+
- Legacy unused: 2
|
|
500
|
+
|
|
501
|
+
Technical Debt (1-10):
|
|
502
|
+
- Causes production bugs: 10
|
|
503
|
+
- Blocks new features: 8
|
|
504
|
+
- Hard to test: 6
|
|
505
|
+
- Style issues only: 2
|
|
506
|
+
|
|
507
|
+
Effort (hours):
|
|
508
|
+
- Rename variables: 1-2
|
|
509
|
+
- Extract methods: 2-4
|
|
510
|
+
- Refactor class: 4-8
|
|
511
|
+
- Architecture change: 40+
|
|
512
|
+
|
|
513
|
+
Risk (1-10):
|
|
514
|
+
- No tests, high coupling: 10
|
|
515
|
+
- Some tests, medium coupling: 5
|
|
516
|
+
- Full tests, loose coupling: 2
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
**Technical Debt Prioritization Decision Tree**
|
|
520
|
+
|
|
521
|
+
```
|
|
522
|
+
Is it causing production bugs?
|
|
523
|
+
├─ YES → Priority: CRITICAL (Fix immediately)
|
|
524
|
+
└─ NO → Is it blocking new features?
|
|
525
|
+
├─ YES → Priority: HIGH (Schedule this sprint)
|
|
526
|
+
└─ NO → Is it frequently modified?
|
|
527
|
+
├─ YES → Priority: MEDIUM (Next quarter)
|
|
528
|
+
└─ NO → Is code coverage < 60%?
|
|
529
|
+
├─ YES → Priority: MEDIUM (Add tests)
|
|
530
|
+
└─ NO → Priority: LOW (Backlog)
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
### 6. Modern Code Quality Practices (2024-2025)
|
|
534
|
+
|
|
535
|
+
**AI-Assisted Code Review Integration**
|
|
536
|
+
|
|
537
|
+
```yaml
|
|
538
|
+
# .github/workflows/ai-review.yml
|
|
539
|
+
name: AI Code Review
|
|
540
|
+
on: [pull_request]
|
|
541
|
+
|
|
542
|
+
jobs:
|
|
543
|
+
ai-review:
|
|
544
|
+
runs-on: ubuntu-latest
|
|
545
|
+
steps:
|
|
546
|
+
- uses: actions/checkout@v4
|
|
547
|
+
|
|
548
|
+
# GitHub Copilot Autofix
|
|
549
|
+
- uses: github/copilot-autofix@v1
|
|
550
|
+
with:
|
|
551
|
+
languages: 'python,typescript,go'
|
|
552
|
+
|
|
553
|
+
# CodeRabbit AI Review
|
|
554
|
+
- uses: coderabbitai/action@v1
|
|
555
|
+
with:
|
|
556
|
+
review_type: 'comprehensive'
|
|
557
|
+
focus: 'security,performance,maintainability'
|
|
558
|
+
|
|
559
|
+
# Codium AI PR-Agent
|
|
560
|
+
- uses: codiumai/pr-agent@v1
|
|
561
|
+
with:
|
|
562
|
+
commands: '/review --pr_reviewer.num_code_suggestions=5'
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
**Static Analysis Toolchain**
|
|
566
|
+
|
|
567
|
+
```python
|
|
568
|
+
# pyproject.toml
|
|
569
|
+
[tool.ruff]
|
|
570
|
+
line-length = 100
|
|
571
|
+
select = [
|
|
572
|
+
"E", # pycodestyle errors
|
|
573
|
+
"W", # pycodestyle warnings
|
|
574
|
+
"F", # pyflakes
|
|
575
|
+
"I", # isort
|
|
576
|
+
"C90", # mccabe complexity
|
|
577
|
+
"N", # pep8-naming
|
|
578
|
+
"UP", # pyupgrade
|
|
579
|
+
"B", # flake8-bugbear
|
|
580
|
+
"A", # flake8-builtins
|
|
581
|
+
"C4", # flake8-comprehensions
|
|
582
|
+
"SIM", # flake8-simplify
|
|
583
|
+
"RET", # flake8-return
|
|
584
|
+
]
|
|
585
|
+
|
|
586
|
+
[tool.mypy]
|
|
587
|
+
strict = true
|
|
588
|
+
warn_unreachable = true
|
|
589
|
+
warn_unused_ignores = true
|
|
590
|
+
|
|
591
|
+
[tool.coverage]
|
|
592
|
+
fail_under = 80
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
```javascript
|
|
596
|
+
// .eslintrc.json
|
|
597
|
+
{
|
|
598
|
+
"extends": [
|
|
599
|
+
"eslint:recommended",
|
|
600
|
+
"plugin:@typescript-eslint/recommended-type-checked",
|
|
601
|
+
"plugin:sonarjs/recommended",
|
|
602
|
+
"plugin:security/recommended"
|
|
603
|
+
],
|
|
604
|
+
"plugins": ["sonarjs", "security", "no-loops"],
|
|
605
|
+
"rules": {
|
|
606
|
+
"complexity": ["error", 10],
|
|
607
|
+
"max-lines-per-function": ["error", 20],
|
|
608
|
+
"max-params": ["error", 3],
|
|
609
|
+
"no-loops/no-loops": "warn",
|
|
610
|
+
"sonarjs/cognitive-complexity": ["error", 15]
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
**Automated Refactoring Suggestions**
|
|
616
|
+
|
|
617
|
+
```python
|
|
618
|
+
# Use Sourcery for automatic refactoring suggestions
|
|
619
|
+
# sourcery.yaml
|
|
620
|
+
rules:
|
|
621
|
+
- id: convert-to-list-comprehension
|
|
622
|
+
- id: merge-duplicate-blocks
|
|
623
|
+
- id: use-named-expression
|
|
624
|
+
- id: inline-immediately-returned-variable
|
|
625
|
+
|
|
626
|
+
# Example: Sourcery will suggest
|
|
627
|
+
# BEFORE
|
|
628
|
+
result = []
|
|
629
|
+
for item in items:
|
|
630
|
+
if item.is_active:
|
|
631
|
+
result.append(item.name)
|
|
632
|
+
|
|
633
|
+
# AFTER (auto-suggested)
|
|
634
|
+
result = [item.name for item in items if item.is_active]
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
**Code Quality Dashboard Configuration**
|
|
638
|
+
|
|
639
|
+
```yaml
|
|
640
|
+
# sonar-project.properties
|
|
641
|
+
sonar.projectKey=my-project
|
|
642
|
+
sonar.sources=src
|
|
643
|
+
sonar.tests=tests
|
|
644
|
+
sonar.coverage.exclusions=**/*_test.py,**/test_*.py
|
|
645
|
+
sonar.python.coverage.reportPaths=coverage.xml
|
|
646
|
+
|
|
647
|
+
# Quality Gates
|
|
648
|
+
sonar.qualitygate.wait=true
|
|
649
|
+
sonar.qualitygate.timeout=300
|
|
650
|
+
|
|
651
|
+
# Thresholds
|
|
652
|
+
sonar.coverage.threshold=80
|
|
653
|
+
sonar.duplications.threshold=3
|
|
654
|
+
sonar.maintainability.rating=A
|
|
655
|
+
sonar.reliability.rating=A
|
|
656
|
+
sonar.security.rating=A
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
**Security-Focused Refactoring**
|
|
660
|
+
|
|
661
|
+
```python
|
|
662
|
+
# Use Semgrep for security-aware refactoring
|
|
663
|
+
# .semgrep.yml
|
|
664
|
+
rules:
|
|
665
|
+
- id: sql-injection-risk
|
|
666
|
+
pattern: execute($QUERY)
|
|
667
|
+
message: Potential SQL injection
|
|
668
|
+
severity: ERROR
|
|
669
|
+
fix: Use parameterized queries
|
|
670
|
+
|
|
671
|
+
- id: hardcoded-secrets
|
|
672
|
+
pattern: password = "..."
|
|
673
|
+
message: Hardcoded password detected
|
|
674
|
+
severity: ERROR
|
|
675
|
+
fix: Use environment variables or secret manager
|
|
676
|
+
|
|
677
|
+
# CodeQL security analysis
|
|
678
|
+
# .github/workflows/codeql.yml
|
|
679
|
+
- uses: github/codeql-action/analyze@v3
|
|
680
|
+
with:
|
|
681
|
+
category: "/language:python"
|
|
682
|
+
queries: security-extended,security-and-quality
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
### 7. Refactored Implementation
|
|
686
|
+
|
|
687
|
+
Provide the complete refactored code with:
|
|
688
|
+
|
|
689
|
+
**Clean Code Principles**
|
|
690
|
+
- Meaningful names (searchable, pronounceable, no abbreviations)
|
|
691
|
+
- Functions do one thing well
|
|
692
|
+
- No side effects
|
|
693
|
+
- Consistent abstraction levels
|
|
694
|
+
- DRY (Don't Repeat Yourself)
|
|
695
|
+
- YAGNI (You Aren't Gonna Need It)
|
|
696
|
+
|
|
697
|
+
**Error Handling**
|
|
698
|
+
```python
|
|
699
|
+
# Use specific exceptions
|
|
700
|
+
class OrderValidationError(Exception):
|
|
701
|
+
pass
|
|
702
|
+
|
|
703
|
+
class InsufficientInventoryError(Exception):
|
|
704
|
+
pass
|
|
705
|
+
|
|
706
|
+
# Fail fast with clear messages
|
|
707
|
+
def validate_order(order):
|
|
708
|
+
if not order.items:
|
|
709
|
+
raise OrderValidationError("Order must contain at least one item")
|
|
710
|
+
|
|
711
|
+
for item in order.items:
|
|
712
|
+
if item.quantity <= 0:
|
|
713
|
+
raise OrderValidationError(f"Invalid quantity for {item.name}")
|
|
714
|
+
```
|
|
715
|
+
|
|
716
|
+
**Documentation**
|
|
717
|
+
```python
|
|
718
|
+
def calculate_discount(order: Order, customer: Customer) -> Decimal:
|
|
719
|
+
"""
|
|
720
|
+
Calculate the total discount for an order based on customer tier and order value.
|
|
721
|
+
|
|
722
|
+
Args:
|
|
723
|
+
order: The order to calculate discount for
|
|
724
|
+
customer: The customer making the order
|
|
725
|
+
|
|
726
|
+
Returns:
|
|
727
|
+
The discount amount as a Decimal
|
|
728
|
+
|
|
729
|
+
Raises:
|
|
730
|
+
ValueError: If order total is negative
|
|
731
|
+
"""
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
### 8. Testing Strategy
|
|
735
|
+
|
|
736
|
+
Generate comprehensive tests for the refactored code:
|
|
737
|
+
|
|
738
|
+
**Unit Tests**
|
|
739
|
+
```python
|
|
740
|
+
class TestOrderProcessor:
|
|
741
|
+
def test_validate_order_empty_items(self):
|
|
742
|
+
order = Order(items=[])
|
|
743
|
+
with pytest.raises(OrderValidationError):
|
|
744
|
+
validate_order(order)
|
|
745
|
+
|
|
746
|
+
def test_calculate_discount_vip_customer(self):
|
|
747
|
+
order = create_test_order(total=1000)
|
|
748
|
+
customer = Customer(tier="VIP")
|
|
749
|
+
discount = calculate_discount(order, customer)
|
|
750
|
+
assert discount == Decimal("100.00") # 10% VIP discount
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
**Test Coverage**
|
|
754
|
+
- All public methods tested
|
|
755
|
+
- Edge cases covered
|
|
756
|
+
- Error conditions verified
|
|
757
|
+
- Performance benchmarks included
|
|
758
|
+
|
|
759
|
+
### 9. Before/After Comparison
|
|
760
|
+
|
|
761
|
+
Provide clear comparisons showing improvements:
|
|
762
|
+
|
|
763
|
+
**Metrics**
|
|
764
|
+
- Cyclomatic complexity reduction
|
|
765
|
+
- Lines of code per method
|
|
766
|
+
- Test coverage increase
|
|
767
|
+
- Performance improvements
|
|
768
|
+
|
|
769
|
+
**Example**
|
|
770
|
+
```
|
|
771
|
+
Before:
|
|
772
|
+
- processData(): 150 lines, complexity: 25
|
|
773
|
+
- 0% test coverage
|
|
774
|
+
- 3 responsibilities mixed
|
|
775
|
+
|
|
776
|
+
After:
|
|
777
|
+
- validateInput(): 20 lines, complexity: 4
|
|
778
|
+
- transformData(): 25 lines, complexity: 5
|
|
779
|
+
- saveResults(): 15 lines, complexity: 3
|
|
780
|
+
- 95% test coverage
|
|
781
|
+
- Clear separation of concerns
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
### 10. Migration Guide
|
|
785
|
+
|
|
786
|
+
If breaking changes are introduced:
|
|
787
|
+
|
|
788
|
+
**Step-by-Step Migration**
|
|
789
|
+
1. Install new dependencies
|
|
790
|
+
2. Update import statements
|
|
791
|
+
3. Replace deprecated methods
|
|
792
|
+
4. Run migration scripts
|
|
793
|
+
5. Execute test suite
|
|
794
|
+
|
|
795
|
+
**Backward Compatibility**
|
|
796
|
+
```python
|
|
797
|
+
# Temporary adapter for smooth migration
|
|
798
|
+
class LegacyOrderProcessor:
|
|
799
|
+
def __init__(self):
|
|
800
|
+
self.processor = OrderProcessor()
|
|
801
|
+
|
|
802
|
+
def process(self, order_data):
|
|
803
|
+
# Convert legacy format
|
|
804
|
+
order = Order.from_legacy(order_data)
|
|
805
|
+
return self.processor.process(order)
|
|
806
|
+
```
|
|
807
|
+
|
|
808
|
+
### 11. Performance Optimizations
|
|
809
|
+
|
|
810
|
+
Include specific optimizations:
|
|
811
|
+
|
|
812
|
+
**Algorithm Improvements**
|
|
813
|
+
```python
|
|
814
|
+
# Before: O(n²)
|
|
815
|
+
for item in items:
|
|
816
|
+
for other in items:
|
|
817
|
+
if item.id == other.id:
|
|
818
|
+
# process
|
|
819
|
+
|
|
820
|
+
# After: O(n)
|
|
821
|
+
item_map = {item.id: item for item in items}
|
|
822
|
+
for item_id, item in item_map.items():
|
|
823
|
+
# process
|
|
824
|
+
```
|
|
825
|
+
|
|
826
|
+
**Caching Strategy**
|
|
827
|
+
```python
|
|
828
|
+
from functools import lru_cache
|
|
829
|
+
|
|
830
|
+
@lru_cache(maxsize=128)
|
|
831
|
+
def calculate_expensive_metric(data_id: str) -> float:
|
|
832
|
+
# Expensive calculation cached
|
|
833
|
+
return result
|
|
834
|
+
```
|
|
835
|
+
|
|
836
|
+
### 12. Code Quality Checklist
|
|
837
|
+
|
|
838
|
+
Ensure the refactored code meets these criteria:
|
|
839
|
+
|
|
840
|
+
- [ ] All methods < 20 lines
|
|
841
|
+
- [ ] All classes < 200 lines
|
|
842
|
+
- [ ] No method has > 3 parameters
|
|
843
|
+
- [ ] Cyclomatic complexity < 10
|
|
844
|
+
- [ ] No nested loops > 2 levels
|
|
845
|
+
- [ ] All names are descriptive
|
|
846
|
+
- [ ] No commented-out code
|
|
847
|
+
- [ ] Consistent formatting
|
|
848
|
+
- [ ] Type hints added (Python/TypeScript)
|
|
849
|
+
- [ ] Error handling comprehensive
|
|
850
|
+
- [ ] Logging added for debugging
|
|
851
|
+
- [ ] Performance metrics included
|
|
852
|
+
- [ ] Documentation complete
|
|
853
|
+
- [ ] Tests achieve > 80% coverage
|
|
854
|
+
- [ ] No security vulnerabilities
|
|
855
|
+
- [ ] AI code review passed
|
|
856
|
+
- [ ] Static analysis clean (SonarQube/CodeQL)
|
|
857
|
+
- [ ] No hardcoded secrets
|
|
858
|
+
|
|
859
|
+
## Severity Levels
|
|
860
|
+
|
|
861
|
+
Rate issues found and improvements made:
|
|
862
|
+
|
|
863
|
+
**Critical**: Security vulnerabilities, data corruption risks, memory leaks
|
|
864
|
+
**High**: Performance bottlenecks, maintainability blockers, missing tests
|
|
865
|
+
**Medium**: Code smells, minor performance issues, incomplete documentation
|
|
866
|
+
**Low**: Style inconsistencies, minor naming issues, nice-to-have features
|
|
867
|
+
|
|
868
|
+
## Output Format
|
|
869
|
+
|
|
870
|
+
1. **Analysis Summary**: Key issues found and their impact
|
|
871
|
+
2. **Refactoring Plan**: Prioritized list of changes with effort estimates
|
|
872
|
+
3. **Refactored Code**: Complete implementation with inline comments explaining changes
|
|
873
|
+
4. **Test Suite**: Comprehensive tests for all refactored components
|
|
874
|
+
5. **Migration Guide**: Step-by-step instructions for adopting changes
|
|
875
|
+
6. **Metrics Report**: Before/after comparison of code quality metrics
|
|
876
|
+
7. **AI Review Results**: Summary of automated code review findings
|
|
877
|
+
8. **Quality Dashboard**: Link to SonarQube/CodeQL results
|
|
878
|
+
|
|
879
|
+
Focus on delivering practical, incremental improvements that can be adopted immediately while maintaining system stability.
|