proagents 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/LICENSE +21 -0
- package/README.md +170 -0
- package/bin/proagents.js +90 -0
- package/lib/commands/feature.js +125 -0
- package/lib/commands/fix.js +60 -0
- package/lib/commands/help.js +76 -0
- package/lib/commands/init.js +64 -0
- package/lib/commands/status.js +91 -0
- package/lib/index.js +28 -0
- package/package.json +52 -0
- package/proagents/.learning/global/common-patterns.json +77 -0
- package/proagents/.learning/global/user-preferences.json +76 -0
- package/proagents/.learning/projects/example-project/corrections.json +99 -0
- package/proagents/.learning/projects/example-project/feedback.json +109 -0
- package/proagents/.learning/projects/example-project/metrics.json +101 -0
- package/proagents/.learning/projects/example-project/patterns.json +102 -0
- package/proagents/.learning/schemas/README.md +48 -0
- package/proagents/.learning/schemas/corrections-schema.json +100 -0
- package/proagents/.learning/schemas/feedback-schema.json +144 -0
- package/proagents/.learning/schemas/metrics-schema.json +96 -0
- package/proagents/.learning/schemas/patterns-schema.json +82 -0
- package/proagents/.learning/schemas/project-patterns-schema.json +125 -0
- package/proagents/.learning/schemas/user-preferences-schema.json +136 -0
- package/proagents/GETTING-STARTED-STORY.md +708 -0
- package/proagents/README.md +99 -0
- package/proagents/WORKFLOW.md +1234 -0
- package/proagents/active-features/.gitkeep +0 -0
- package/proagents/active-features/README.md +176 -0
- package/proagents/active-features/_index.json +74 -0
- package/proagents/active-features/feature-user-auth/dependencies.json +81 -0
- package/proagents/active-features/feature-user-auth/files-modified.json +126 -0
- package/proagents/active-features/feature-user-auth/status.json +122 -0
- package/proagents/active-features/schemas/dependencies-schema.json +119 -0
- package/proagents/active-features/schemas/feature-schema.json +132 -0
- package/proagents/active-features/schemas/files-schema.json +100 -0
- package/proagents/active-features/schemas/index-schema.json +95 -0
- package/proagents/adr/README.md +302 -0
- package/proagents/adr/examples/api-versioning.md +297 -0
- package/proagents/adr/examples/database-choice.md +264 -0
- package/proagents/adr/template.md +273 -0
- package/proagents/ai-models/README.md +141 -0
- package/proagents/ai-models/cost-management.md +362 -0
- package/proagents/ai-models/fallbacks.md +342 -0
- package/proagents/ai-models/model-config.md +318 -0
- package/proagents/ai-models/task-routing.md +503 -0
- package/proagents/ai-training/README.md +155 -0
- package/proagents/ai-training/continuous-learning.md +413 -0
- package/proagents/ai-training/domain-knowledge.md +378 -0
- package/proagents/ai-training/pattern-learning.md +455 -0
- package/proagents/ai-training/training-data.md +337 -0
- package/proagents/ai-training/user-preferences.md +346 -0
- package/proagents/api-versioning/README.md +257 -0
- package/proagents/api-versioning/changelog-template.md +225 -0
- package/proagents/api-versioning/deprecation-workflow.md +470 -0
- package/proagents/api-versioning/versioning-strategy.md +291 -0
- package/proagents/approval-workflows/README.md +146 -0
- package/proagents/approval-workflows/approval-config.md +332 -0
- package/proagents/approval-workflows/approval-stages.md +503 -0
- package/proagents/approval-workflows/emergency-bypass.md +351 -0
- package/proagents/approval-workflows/examples.md +859 -0
- package/proagents/approval-workflows/notifications.md +320 -0
- package/proagents/automation/README.md +38 -0
- package/proagents/automation/ai-behavior-rules.md +339 -0
- package/proagents/automation/ai-prompt-injection.md +331 -0
- package/proagents/automation/auto-decisions.md +535 -0
- package/proagents/automation/decision-defaults.yaml +317 -0
- package/proagents/cache/README.md +110 -0
- package/proagents/cache/analysis-metadata.json +76 -0
- package/proagents/cache/conventions.json +125 -0
- package/proagents/cache/dependencies.json +85 -0
- package/proagents/cache/features.json +115 -0
- package/proagents/cache/patterns.json +105 -0
- package/proagents/cache/schemas/conventions-schema.json +138 -0
- package/proagents/cache/schemas/dependencies-schema.json +95 -0
- package/proagents/cache/schemas/features-schema.json +104 -0
- package/proagents/cache/schemas/metadata-schema.json +83 -0
- package/proagents/cache/schemas/patterns-schema.json +136 -0
- package/proagents/cache/schemas/structure-schema.json +72 -0
- package/proagents/cache/structure.json +109 -0
- package/proagents/changelog/2024/01/2024-01-10-api-url-config.md +41 -0
- package/proagents/changelog/2024/01/2024-01-12-login-bug-fix.md +69 -0
- package/proagents/changelog/2024/01/2024-01-15-user-auth-feature.md +99 -0
- package/proagents/changelog/CHANGELOG.md +82 -0
- package/proagents/changelog/README.md +327 -0
- package/proagents/changelog/entry-template.md +283 -0
- package/proagents/checklists/README.md +261 -0
- package/proagents/checklists/code-quality.md +137 -0
- package/proagents/checklists/code-review.md +148 -0
- package/proagents/checklists/pr-checklist.md +78 -0
- package/proagents/checklists/pre-deployment.md +132 -0
- package/proagents/checklists/pre-implementation.md +80 -0
- package/proagents/checklists/testing.md +120 -0
- package/proagents/cicd/README.md +338 -0
- package/proagents/cicd/azure-devops.md +267 -0
- package/proagents/cicd/github-actions.md +375 -0
- package/proagents/cicd/gitlab-ci.md +278 -0
- package/proagents/cicd/jenkins.md +317 -0
- package/proagents/cli/README.md +392 -0
- package/proagents/cli/commands-reference.md +893 -0
- package/proagents/cli/ide-integration.md +584 -0
- package/proagents/cli/shortcuts.md +394 -0
- package/proagents/cli/slash-commands.md +507 -0
- package/proagents/collaboration/README.md +143 -0
- package/proagents/collaboration/roles.md +248 -0
- package/proagents/collaboration/sessions.md +390 -0
- package/proagents/collaboration/sync.md +358 -0
- package/proagents/compliance/README.md +206 -0
- package/proagents/compliance/access-control.md +310 -0
- package/proagents/compliance/audit-logging.md +444 -0
- package/proagents/compliance/compliance-frameworks.md +429 -0
- package/proagents/compliance/reports.md +491 -0
- package/proagents/compliance/retention-policies.md +454 -0
- package/proagents/config/README.md +181 -0
- package/proagents/config/integrations/README.md +68 -0
- package/proagents/config/integrations/github.yaml +211 -0
- package/proagents/config/integrations/jira.yaml +144 -0
- package/proagents/config/integrations/linear.yaml +157 -0
- package/proagents/config/integrations/notion.yaml +203 -0
- package/proagents/config/integrations/slack.yaml +230 -0
- package/proagents/config/rules/README.md +73 -0
- package/proagents/config/rules/custom-rules.template.yaml +188 -0
- package/proagents/config/rules/validation-rules.template.yaml +177 -0
- package/proagents/config/standards/README.md +58 -0
- package/proagents/config/standards/architecture-rules.template.md +124 -0
- package/proagents/config/standards/coding-standards.template.md +107 -0
- package/proagents/config/standards/naming-conventions.template.md +114 -0
- package/proagents/config/standards/testing-standards.template.md +213 -0
- package/proagents/config/templates/README.md +74 -0
- package/proagents/config/templates/api-route.template.ts +142 -0
- package/proagents/config/templates/component.template.tsx +55 -0
- package/proagents/config/templates/hook.template.ts +93 -0
- package/proagents/config/templates/test.template.ts +171 -0
- package/proagents/config-versioning/README.md +120 -0
- package/proagents/config-versioning/changelog.md +300 -0
- package/proagents/config-versioning/rollback.md +283 -0
- package/proagents/config-versioning/versioning.md +330 -0
- package/proagents/contract-testing/README.md +223 -0
- package/proagents/contract-testing/contract-testing.md +614 -0
- package/proagents/contract-testing/pact-integration.md +507 -0
- package/proagents/contract-testing/schema-validation.md +565 -0
- package/proagents/cost/README.md +48 -0
- package/proagents/cost/cost-template.md +283 -0
- package/proagents/cost/estimation-framework.md +287 -0
- package/proagents/database/README.md +72 -0
- package/proagents/database/examples/001-create-users.sql +129 -0
- package/proagents/database/examples/002-add-preferences.sql +94 -0
- package/proagents/database/examples/003-add-index.sql +105 -0
- package/proagents/database/examples/004-rename-column.sql +122 -0
- package/proagents/database/examples/005-add-foreign-key.sql +142 -0
- package/proagents/database/examples/006-data-migration.sql +196 -0
- package/proagents/database/examples/007-drop-column.sql +163 -0
- package/proagents/database/examples/README.md +89 -0
- package/proagents/database/migration-workflow.md +478 -0
- package/proagents/database/rollback-scripts.md +487 -0
- package/proagents/database/safety-checks.md +447 -0
- package/proagents/dependency-management/README.md +140 -0
- package/proagents/dependency-management/automation.md +363 -0
- package/proagents/dependency-management/compatibility.md +319 -0
- package/proagents/dependency-management/security-scanning.md +413 -0
- package/proagents/dependency-management/update-policies.md +374 -0
- package/proagents/disaster-recovery/README.md +247 -0
- package/proagents/disaster-recovery/automation.md +366 -0
- package/proagents/disaster-recovery/backup-recovery.md +571 -0
- package/proagents/disaster-recovery/incident-response.md +565 -0
- package/proagents/disaster-recovery/rollback-procedures.md +499 -0
- package/proagents/disaster-recovery/runbooks.md +603 -0
- package/proagents/disaster-recovery/scenarios.md +892 -0
- package/proagents/disaster-recovery/testing.md +438 -0
- package/proagents/environments/README.md +244 -0
- package/proagents/environments/configuration.md +437 -0
- package/proagents/environments/promotion.md +434 -0
- package/proagents/environments/setup.md +420 -0
- package/proagents/examples/README.md +55 -0
- package/proagents/examples/backend-nodejs/README.md +188 -0
- package/proagents/examples/backend-nodejs/complete-conversation.md +601 -0
- package/proagents/examples/backend-nodejs/proagents.config.yaml +415 -0
- package/proagents/examples/backend-nodejs/workflow-example.md +909 -0
- package/proagents/examples/fullstack-nextjs/README.md +155 -0
- package/proagents/examples/fullstack-nextjs/complete-conversation.md +604 -0
- package/proagents/examples/fullstack-nextjs/proagents.config.yaml +287 -0
- package/proagents/examples/fullstack-nextjs/workflow-example.md +553 -0
- package/proagents/examples/mobile-react-native/README.md +171 -0
- package/proagents/examples/mobile-react-native/complete-conversation.md +825 -0
- package/proagents/examples/mobile-react-native/proagents.config.yaml +330 -0
- package/proagents/examples/mobile-react-native/workflow-example.md +723 -0
- package/proagents/examples/web-frontend-react/README.md +125 -0
- package/proagents/examples/web-frontend-react/complete-conversation.md +556 -0
- package/proagents/examples/web-frontend-react/proagents.config.yaml +183 -0
- package/proagents/examples/web-frontend-react/workflow-example.md +603 -0
- package/proagents/existing-projects/README.md +65 -0
- package/proagents/existing-projects/challenges.md +861 -0
- package/proagents/existing-projects/coexistence-mode.md +483 -0
- package/proagents/existing-projects/compatibility-assessment.md +541 -0
- package/proagents/existing-projects/gradual-adoption.md +515 -0
- package/proagents/existing-projects/migration-strategies.md +788 -0
- package/proagents/existing-projects/pattern-reconciliation.md +489 -0
- package/proagents/existing-projects/team-onboarding.md +617 -0
- package/proagents/existing-projects/technical-debt-handling.md +644 -0
- package/proagents/feature-flags/README.md +263 -0
- package/proagents/feature-flags/ab-testing.md +413 -0
- package/proagents/feature-flags/configuration.md +420 -0
- package/proagents/feature-flags/kill-switches.md +444 -0
- package/proagents/feature-flags/rollout-strategies.md +392 -0
- package/proagents/getting-started/README.md +60 -0
- package/proagents/getting-started/ai-training-setup.md +380 -0
- package/proagents/getting-started/ide-setup.md +195 -0
- package/proagents/getting-started/mcp-setup.md +239 -0
- package/proagents/getting-started/pm-integration.md +336 -0
- package/proagents/getting-started/prompt-engineering.md +478 -0
- package/proagents/getting-started/team-onboarding.md +236 -0
- package/proagents/git/README.md +68 -0
- package/proagents/git/branch-strategy.md +164 -0
- package/proagents/git/commit-conventions.md +241 -0
- package/proagents/git/pr-workflow.md +286 -0
- package/proagents/git/rollback-procedures.md +416 -0
- package/proagents/i18n/README.md +133 -0
- package/proagents/i18n/extraction.md +433 -0
- package/proagents/i18n/tms-integration.md +332 -0
- package/proagents/i18n/translation-workflow.md +413 -0
- package/proagents/i18n/validation.md +355 -0
- package/proagents/ide-integration/README.md +124 -0
- package/proagents/ide-integration/cline-config.md +429 -0
- package/proagents/ide-integration/continue-config.md +380 -0
- package/proagents/ide-integration/cursor-rules.md +280 -0
- package/proagents/ide-integration/github-copilot.md +384 -0
- package/proagents/ide-integration/windsurf-rules.md +314 -0
- package/proagents/integrations/README.md +97 -0
- package/proagents/integrations/pm/README.md +344 -0
- package/proagents/learning/README.md +136 -0
- package/proagents/learning/adaptation.md +305 -0
- package/proagents/learning/data-collection.md +283 -0
- package/proagents/learning/implementation-guide.md +865 -0
- package/proagents/learning/reports.md +306 -0
- package/proagents/logging/README.md +276 -0
- package/proagents/logging/aggregation.md +475 -0
- package/proagents/logging/log-levels.md +376 -0
- package/proagents/logging/sensitive-data.md +423 -0
- package/proagents/logging/structured-logging.md +406 -0
- package/proagents/mcp/README.md +133 -0
- package/proagents/mcp/context-providers.md +442 -0
- package/proagents/mcp/server-config.md +306 -0
- package/proagents/mcp/tools-definition.md +513 -0
- package/proagents/metrics/README.md +174 -0
- package/proagents/metrics/code-quality-kpis.md +461 -0
- package/proagents/metrics/deployment-metrics.md +517 -0
- package/proagents/metrics/developer-productivity.md +368 -0
- package/proagents/metrics/learning-effectiveness.md +478 -0
- package/proagents/migrations/README.md +77 -0
- package/proagents/migrations/from-claude-projects.md +312 -0
- package/proagents/migrations/from-cursor-rules.md +345 -0
- package/proagents/migrations/from-custom-workflows.md +410 -0
- package/proagents/monitoring/README.md +308 -0
- package/proagents/monitoring/alerting.md +449 -0
- package/proagents/monitoring/dashboards.md +454 -0
- package/proagents/monitoring/health-checks.md +436 -0
- package/proagents/monitoring/metrics.md +434 -0
- package/proagents/multi-project/README.md +170 -0
- package/proagents/multi-project/coordinated-deploy.md +510 -0
- package/proagents/multi-project/cross-project-deps.md +395 -0
- package/proagents/multi-project/unified-changelog.md +477 -0
- package/proagents/multi-project/walkthroughs/monorepo-setup.md +787 -0
- package/proagents/multi-project/workspace-config.md +408 -0
- package/proagents/notifications/README.md +151 -0
- package/proagents/notifications/channels.md +457 -0
- package/proagents/notifications/preferences.md +415 -0
- package/proagents/notifications/routing.md +449 -0
- package/proagents/notifications/scheduling.md +425 -0
- package/proagents/notifications/templates.md +446 -0
- package/proagents/offline-mode/README.md +145 -0
- package/proagents/offline-mode/caching.md +344 -0
- package/proagents/offline-mode/offline-operations.md +312 -0
- package/proagents/offline-mode/queue-specifications.md +679 -0
- package/proagents/offline-mode/sync.md +475 -0
- package/proagents/parallel-features/README.md +85 -0
- package/proagents/parallel-features/conflict-detection.md +226 -0
- package/proagents/parallel-features/dependency-management.md +392 -0
- package/proagents/parallel-features/merge-coordination.md +506 -0
- package/proagents/parallel-features/tracking-system.md +416 -0
- package/proagents/patterns/README.md +305 -0
- package/proagents/patterns/api-errors.md +453 -0
- package/proagents/patterns/async-errors.md +521 -0
- package/proagents/patterns/error-types.md +437 -0
- package/proagents/patterns/ui-errors.md +595 -0
- package/proagents/performance/README.md +59 -0
- package/proagents/performance/bundle-analysis.md +375 -0
- package/proagents/performance/load-testing.md +563 -0
- package/proagents/performance/runtime-metrics.md +489 -0
- package/proagents/performance/web-vitals.md +425 -0
- package/proagents/plugins/README.md +139 -0
- package/proagents/plugins/creating-plugins.md +504 -0
- package/proagents/plugins/plugin-api.md +467 -0
- package/proagents/plugins/plugin-registry.md +276 -0
- package/proagents/pm-integration/README.md +151 -0
- package/proagents/pm-integration/asana.md +346 -0
- package/proagents/pm-integration/github-issues.md +308 -0
- package/proagents/pm-integration/gitlab-issues.md +482 -0
- package/proagents/pm-integration/jira.md +364 -0
- package/proagents/pm-integration/linear.md +409 -0
- package/proagents/pm-integration/notion.md +275 -0
- package/proagents/pm-integration/sync-config.md +533 -0
- package/proagents/pm-integration/trello.md +159 -0
- package/proagents/proagents.config.yaml +213 -0
- package/proagents/prompts/00-init-wizard.md +426 -0
- package/proagents/prompts/00-init.md +219 -0
- package/proagents/prompts/01-analysis.md +244 -0
- package/proagents/prompts/02-requirements.md +399 -0
- package/proagents/prompts/03-ui-design.md +493 -0
- package/proagents/prompts/04-planning.md +505 -0
- package/proagents/prompts/05-implementation.md +518 -0
- package/proagents/prompts/06-testing.md +620 -0
- package/proagents/prompts/06.5-code-review.md +512 -0
- package/proagents/prompts/07-documentation.md +673 -0
- package/proagents/prompts/08-deployment.md +539 -0
- package/proagents/prompts/09-rollback.md +554 -0
- package/proagents/prompts/README.md +51 -0
- package/proagents/prompts/accessibility/README.md +146 -0
- package/proagents/prompts/accessibility/aria.md +276 -0
- package/proagents/prompts/accessibility/audit.md +233 -0
- package/proagents/prompts/accessibility/keyboard.md +392 -0
- package/proagents/prompts/accessibility/wcag.md +189 -0
- package/proagents/prompts/debugging/README.md +51 -0
- package/proagents/prompts/debugging/error-analysis.md +385 -0
- package/proagents/prompts/debugging/performance-debug.md +381 -0
- package/proagents/prompts/debugging/systematic.md +270 -0
- package/proagents/prompts/performance/README.md +47 -0
- package/proagents/prompts/performance/analyze.md +265 -0
- package/proagents/prompts/performance/optimize.md +347 -0
- package/proagents/prompts/refactoring/README.md +51 -0
- package/proagents/prompts/refactoring/architecture.md +531 -0
- package/proagents/prompts/refactoring/code-smells.md +174 -0
- package/proagents/prompts/refactoring/patterns.md +516 -0
- package/proagents/prompts/security-audit/README.md +197 -0
- package/proagents/prompts/security-audit/code-review.md +260 -0
- package/proagents/prompts/security-audit/vulnerability-scan.md +288 -0
- package/proagents/reporting/README.md +158 -0
- package/proagents/reporting/dashboards.md +366 -0
- package/proagents/reporting/exports.md +524 -0
- package/proagents/reporting/quality-metrics.md +385 -0
- package/proagents/reporting/templates/README.md +56 -0
- package/proagents/reporting/templates/dashboard-config.json +187 -0
- package/proagents/reporting/templates/metrics-queries.md +427 -0
- package/proagents/reporting/templates/react-dashboard.tsx +544 -0
- package/proagents/reporting/templates/widgets.md +451 -0
- package/proagents/reporting/velocity-metrics.md +340 -0
- package/proagents/reverse-engineering/README.md +151 -0
- package/proagents/reverse-engineering/architecture-extraction.md +325 -0
- package/proagents/reverse-engineering/code-analysis.md +377 -0
- package/proagents/reverse-engineering/dependency-mapping.md +567 -0
- package/proagents/reverse-engineering/diagram-generation.md +586 -0
- package/proagents/reverse-engineering/documentation-generation.md +468 -0
- package/proagents/reverse-engineering/pattern-detection.md +569 -0
- package/proagents/reverse-engineering/quality-assessment.md +733 -0
- package/proagents/rules/README.md +179 -0
- package/proagents/rules/custom-rules-template.yaml +286 -0
- package/proagents/rules/custom-rules.md +754 -0
- package/proagents/rules/validation-rules-template.yaml +517 -0
- package/proagents/runbooks/README.md +219 -0
- package/proagents/runbooks/dependency-vulnerability.md +505 -0
- package/proagents/runbooks/incident-response.md +451 -0
- package/proagents/runbooks/performance-degradation.md +584 -0
- package/proagents/runbooks/production-debugging.md +489 -0
- package/proagents/scaffolding/README.md +64 -0
- package/proagents/scaffolding/nextjs/README.md +578 -0
- package/proagents/scaffolding/nextjs/templates/api-route.ts.template +185 -0
- package/proagents/scaffolding/nextjs/templates/page.tsx.template +109 -0
- package/proagents/scaffolding/nextjs/templates/server-action.ts.template +204 -0
- package/proagents/scaffolding/nodejs/README.md +558 -0
- package/proagents/scaffolding/nodejs/templates/controller.ts.template +167 -0
- package/proagents/scaffolding/nodejs/templates/repository.ts.template +155 -0
- package/proagents/scaffolding/nodejs/templates/service.ts.template +207 -0
- package/proagents/scaffolding/project-types.md +401 -0
- package/proagents/scaffolding/react/README.md +399 -0
- package/proagents/scaffolding/react/templates/component.tsx.template +88 -0
- package/proagents/scaffolding/react/templates/hook.ts.template +127 -0
- package/proagents/scaffolding/react/templates/service.ts.template +155 -0
- package/proagents/scaffolding/react/templates/test.tsx.template +149 -0
- package/proagents/scaffolding/react-native/README.md +476 -0
- package/proagents/scaffolding/react-native/templates/hook.ts.template +226 -0
- package/proagents/scaffolding/react-native/templates/screen.tsx.template +247 -0
- package/proagents/secrets/README.md +278 -0
- package/proagents/secrets/access-control.md +443 -0
- package/proagents/secrets/rotation.md +403 -0
- package/proagents/secrets/scanning.md +487 -0
- package/proagents/secrets/storage.md +394 -0
- package/proagents/security/README.md +71 -0
- package/proagents/security/owasp-checklist.md +390 -0
- package/proagents/security/sast-guide.md +473 -0
- package/proagents/security/security-report-template.md +343 -0
- package/proagents/security/vulnerability-scanning.md +329 -0
- package/proagents/slash-commands.json +161 -0
- package/proagents/standards/README.md +120 -0
- package/proagents/standards/architecture-patterns.md +728 -0
- package/proagents/standards/architecture-rules-template.md +489 -0
- package/proagents/standards/coding-standards-template.md +489 -0
- package/proagents/standards/examples/README.md +61 -0
- package/proagents/standards/examples/nodejs-api.md +560 -0
- package/proagents/standards/examples/react-nextjs.md +428 -0
- package/proagents/standards/naming-conventions-template.md +526 -0
- package/proagents/standards/override-system.md +717 -0
- package/proagents/standards/testing-standards-template.md +220 -0
- package/proagents/team/README.md +256 -0
- package/proagents/team/code-ownership.md +306 -0
- package/proagents/team/communication-templates.md +441 -0
- package/proagents/team/handoff-protocol.md +380 -0
- package/proagents/team/ide-setup/README.md +103 -0
- package/proagents/team/ide-setup/cursor.md +276 -0
- package/proagents/team/ide-setup/jetbrains.md +330 -0
- package/proagents/team/ide-setup/neovim.md +640 -0
- package/proagents/team/ide-setup/vscode.md +348 -0
- package/proagents/team/onboarding.md +278 -0
- package/proagents/templates/README.md +57 -0
- package/proagents/templates/code-review-report.md +255 -0
- package/proagents/templates/codebase-analysis-report.md +315 -0
- package/proagents/templates/deployment-checklist.md +277 -0
- package/proagents/templates/feature-requirements.md +142 -0
- package/proagents/templates/feature-status.md +231 -0
- package/proagents/templates/implementation-plan.md +373 -0
- package/proagents/templates/rollback-plan.md +331 -0
- package/proagents/templates/test-plan.md +336 -0
- package/proagents/templates/ui-specification.md +431 -0
- package/proagents/testing-standards/README.md +229 -0
- package/proagents/testing-standards/coverage-requirements.md +198 -0
- package/proagents/testing-standards/mocking-guidelines.md +478 -0
- package/proagents/testing-standards/test-naming.md +485 -0
- package/proagents/testing-standards/test-patterns.md +488 -0
- package/proagents/troubleshooting/README.md +730 -0
- package/proagents/troubleshooting/ai-issues.md +601 -0
- package/proagents/troubleshooting/workflow-issues.md +571 -0
- package/proagents/ui-integration/README.md +77 -0
- package/proagents/ui-integration/figma-guide.md +217 -0
- package/proagents/ui-integration/manual-export-guide.md +358 -0
- package/proagents/ui-integration/sketch-interpretation.md +471 -0
- package/proagents/webhooks/README.md +126 -0
- package/proagents/webhooks/endpoints.md +298 -0
- package/proagents/webhooks/events.md +316 -0
- package/proagents/webhooks/payloads.md +325 -0
- package/proagents/webhooks/reliability.md +363 -0
- package/proagents/webhooks/security.md +380 -0
- package/proagents/workflow-modes/README.md +136 -0
- package/proagents/workflow-modes/deferred-tracking.md +405 -0
- package/proagents/workflow-modes/entry-modes.md +397 -0
- package/proagents/workflow-modes/guardrails.md +405 -0
- package/proagents/workflow-modes/mode-detection.md +358 -0
- package/proagents/workflow-modes/mode-switching.md +372 -0
|
@@ -0,0 +1,531 @@
|
|
|
1
|
+
# Architecture Refactoring Prompt
|
|
2
|
+
|
|
3
|
+
Guide for architecture-level refactoring.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt Template
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
## Architecture Refactoring Request
|
|
11
|
+
|
|
12
|
+
### Current Architecture
|
|
13
|
+
{{description of current architecture}}
|
|
14
|
+
|
|
15
|
+
### Problems
|
|
16
|
+
- {{problem 1}}
|
|
17
|
+
- {{problem 2}}
|
|
18
|
+
- {{problem 3}}
|
|
19
|
+
|
|
20
|
+
### Desired Outcome
|
|
21
|
+
{{what the improved architecture should achieve}}
|
|
22
|
+
|
|
23
|
+
### Constraints
|
|
24
|
+
- {{constraint 1: e.g., must maintain API compatibility}}
|
|
25
|
+
- {{constraint 2: e.g., cannot introduce new dependencies}}
|
|
26
|
+
- {{constraint 3: e.g., must be done incrementally}}
|
|
27
|
+
|
|
28
|
+
### Analyze and Plan:
|
|
29
|
+
1. Current architecture assessment
|
|
30
|
+
2. Proposed target architecture
|
|
31
|
+
3. Migration strategy
|
|
32
|
+
4. Risk assessment
|
|
33
|
+
5. Implementation phases
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Monolith to Modular
|
|
39
|
+
|
|
40
|
+
Transform a monolithic codebase into modules.
|
|
41
|
+
|
|
42
|
+
### Before: Monolithic Structure
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
/src
|
|
46
|
+
├── index.ts
|
|
47
|
+
├── database.ts
|
|
48
|
+
├── api.ts
|
|
49
|
+
├── utils.ts
|
|
50
|
+
├── models/
|
|
51
|
+
│ ├── user.ts
|
|
52
|
+
│ ├── order.ts
|
|
53
|
+
│ └── product.ts
|
|
54
|
+
├── controllers/
|
|
55
|
+
│ ├── userController.ts
|
|
56
|
+
│ ├── orderController.ts
|
|
57
|
+
│ └── productController.ts
|
|
58
|
+
└── services/
|
|
59
|
+
├── userService.ts
|
|
60
|
+
├── orderService.ts
|
|
61
|
+
└── productService.ts
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### After: Modular Structure
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
/src
|
|
68
|
+
├── index.ts # Main entry
|
|
69
|
+
├── shared/ # Shared utilities
|
|
70
|
+
│ ├── database/
|
|
71
|
+
│ │ ├── connection.ts
|
|
72
|
+
│ │ └── migrations/
|
|
73
|
+
│ ├── utils/
|
|
74
|
+
│ └── types/
|
|
75
|
+
│
|
|
76
|
+
├── modules/
|
|
77
|
+
│ ├── users/ # User module
|
|
78
|
+
│ │ ├── index.ts # Public API
|
|
79
|
+
│ │ ├── user.model.ts
|
|
80
|
+
│ │ ├── user.service.ts
|
|
81
|
+
│ │ ├── user.controller.ts
|
|
82
|
+
│ │ ├── user.routes.ts
|
|
83
|
+
│ │ ├── user.types.ts
|
|
84
|
+
│ │ └── __tests__/
|
|
85
|
+
│ │
|
|
86
|
+
│ ├── orders/ # Order module
|
|
87
|
+
│ │ ├── index.ts
|
|
88
|
+
│ │ ├── order.model.ts
|
|
89
|
+
│ │ ├── order.service.ts
|
|
90
|
+
│ │ ├── order.controller.ts
|
|
91
|
+
│ │ └── __tests__/
|
|
92
|
+
│ │
|
|
93
|
+
│ └── products/ # Product module
|
|
94
|
+
│ ├── index.ts
|
|
95
|
+
│ └── ...
|
|
96
|
+
│
|
|
97
|
+
└── app.ts # Application setup
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Module Interface
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
// modules/users/index.ts - Public API
|
|
104
|
+
export { UserService } from './user.service';
|
|
105
|
+
export { userRoutes } from './user.routes';
|
|
106
|
+
export type { User, CreateUserDTO, UpdateUserDTO } from './user.types';
|
|
107
|
+
|
|
108
|
+
// Other modules import from the index, not internal files
|
|
109
|
+
import { UserService, User } from '@/modules/users';
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Layer Separation
|
|
115
|
+
|
|
116
|
+
Separate concerns into distinct layers.
|
|
117
|
+
|
|
118
|
+
### Before: Mixed Concerns
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
// Mixed database, business logic, and HTTP handling
|
|
122
|
+
app.post('/orders', async (req, res) => {
|
|
123
|
+
// Validation
|
|
124
|
+
if (!req.body.items?.length) {
|
|
125
|
+
return res.status(400).json({ error: 'Items required' });
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Business logic mixed with DB
|
|
129
|
+
const items = await db.query('SELECT * FROM products WHERE id IN (?)', [
|
|
130
|
+
req.body.items.map(i => i.productId)
|
|
131
|
+
]);
|
|
132
|
+
|
|
133
|
+
let total = 0;
|
|
134
|
+
for (const item of req.body.items) {
|
|
135
|
+
const product = items.find(p => p.id === item.productId);
|
|
136
|
+
total += product.price * item.quantity;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// More DB operations
|
|
140
|
+
const orderId = await db.query('INSERT INTO orders...', [total]);
|
|
141
|
+
|
|
142
|
+
// HTTP response
|
|
143
|
+
res.json({ orderId, total });
|
|
144
|
+
});
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### After: Clean Layers
|
|
148
|
+
|
|
149
|
+
```typescript
|
|
150
|
+
// LAYER 1: Routes/Controllers (HTTP concerns)
|
|
151
|
+
// routes/orders.ts
|
|
152
|
+
router.post('/orders', orderController.create);
|
|
153
|
+
|
|
154
|
+
// controllers/order.controller.ts
|
|
155
|
+
class OrderController {
|
|
156
|
+
async create(req: Request, res: Response) {
|
|
157
|
+
try {
|
|
158
|
+
const dto = plainToClass(CreateOrderDTO, req.body);
|
|
159
|
+
await validateOrThrow(dto);
|
|
160
|
+
|
|
161
|
+
const order = await this.orderService.create(dto);
|
|
162
|
+
res.status(201).json(order);
|
|
163
|
+
} catch (error) {
|
|
164
|
+
handleError(res, error);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// LAYER 2: Services (Business Logic)
|
|
170
|
+
// services/order.service.ts
|
|
171
|
+
class OrderService {
|
|
172
|
+
constructor(
|
|
173
|
+
private orderRepo: OrderRepository,
|
|
174
|
+
private productRepo: ProductRepository
|
|
175
|
+
) {}
|
|
176
|
+
|
|
177
|
+
async create(dto: CreateOrderDTO): Promise<Order> {
|
|
178
|
+
const products = await this.productRepo.findByIds(
|
|
179
|
+
dto.items.map(i => i.productId)
|
|
180
|
+
);
|
|
181
|
+
|
|
182
|
+
const total = this.calculateTotal(dto.items, products);
|
|
183
|
+
const order = new Order(dto.items, total);
|
|
184
|
+
|
|
185
|
+
return this.orderRepo.save(order);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
private calculateTotal(items, products): number {
|
|
189
|
+
return items.reduce((sum, item) => {
|
|
190
|
+
const product = products.find(p => p.id === item.productId);
|
|
191
|
+
return sum + product.price * item.quantity;
|
|
192
|
+
}, 0);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// LAYER 3: Repositories (Data Access)
|
|
197
|
+
// repositories/order.repository.ts
|
|
198
|
+
class OrderRepository {
|
|
199
|
+
async save(order: Order): Promise<Order> {
|
|
200
|
+
const result = await this.db.insert('orders', order);
|
|
201
|
+
return { ...order, id: result.insertId };
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
async findById(id: string): Promise<Order | null> {
|
|
205
|
+
return this.db.findOne('orders', { id });
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Dependency Injection
|
|
213
|
+
|
|
214
|
+
Remove hard dependencies for better testability.
|
|
215
|
+
|
|
216
|
+
### Before: Hard Dependencies
|
|
217
|
+
|
|
218
|
+
```typescript
|
|
219
|
+
// Tightly coupled, hard to test
|
|
220
|
+
class UserService {
|
|
221
|
+
async createUser(data: CreateUserDTO) {
|
|
222
|
+
// Hard dependency on database
|
|
223
|
+
const user = await prisma.user.create({ data });
|
|
224
|
+
|
|
225
|
+
// Hard dependency on email service
|
|
226
|
+
await sendgrid.send({
|
|
227
|
+
to: user.email,
|
|
228
|
+
subject: 'Welcome',
|
|
229
|
+
body: 'Welcome to our platform'
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
// Hard dependency on analytics
|
|
233
|
+
mixpanel.track('user_created', { userId: user.id });
|
|
234
|
+
|
|
235
|
+
return user;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### After: Dependency Injection
|
|
241
|
+
|
|
242
|
+
```typescript
|
|
243
|
+
// Interfaces for dependencies
|
|
244
|
+
interface UserRepository {
|
|
245
|
+
create(data: CreateUserDTO): Promise<User>;
|
|
246
|
+
findById(id: string): Promise<User | null>;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
interface EmailService {
|
|
250
|
+
send(to: string, subject: string, body: string): Promise<void>;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
interface Analytics {
|
|
254
|
+
track(event: string, properties: Record<string, any>): void;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// Service with injected dependencies
|
|
258
|
+
class UserService {
|
|
259
|
+
constructor(
|
|
260
|
+
private userRepo: UserRepository,
|
|
261
|
+
private emailService: EmailService,
|
|
262
|
+
private analytics: Analytics
|
|
263
|
+
) {}
|
|
264
|
+
|
|
265
|
+
async createUser(data: CreateUserDTO): Promise<User> {
|
|
266
|
+
const user = await this.userRepo.create(data);
|
|
267
|
+
|
|
268
|
+
await this.emailService.send(
|
|
269
|
+
user.email,
|
|
270
|
+
'Welcome',
|
|
271
|
+
'Welcome to our platform'
|
|
272
|
+
);
|
|
273
|
+
|
|
274
|
+
this.analytics.track('user_created', { userId: user.id });
|
|
275
|
+
|
|
276
|
+
return user;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// Production implementation
|
|
281
|
+
const userService = new UserService(
|
|
282
|
+
new PrismaUserRepository(),
|
|
283
|
+
new SendGridEmailService(),
|
|
284
|
+
new MixpanelAnalytics()
|
|
285
|
+
);
|
|
286
|
+
|
|
287
|
+
// Test implementation
|
|
288
|
+
const testUserService = new UserService(
|
|
289
|
+
new InMemoryUserRepository(),
|
|
290
|
+
new MockEmailService(),
|
|
291
|
+
new MockAnalytics()
|
|
292
|
+
);
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## Event-Driven Architecture
|
|
298
|
+
|
|
299
|
+
Decouple components using events.
|
|
300
|
+
|
|
301
|
+
### Before: Direct Coupling
|
|
302
|
+
|
|
303
|
+
```typescript
|
|
304
|
+
class OrderService {
|
|
305
|
+
async createOrder(data: CreateOrderDTO) {
|
|
306
|
+
const order = await this.orderRepo.save(data);
|
|
307
|
+
|
|
308
|
+
// Direct calls to other services - tight coupling
|
|
309
|
+
await this.inventoryService.decrementStock(order.items);
|
|
310
|
+
await this.notificationService.sendOrderConfirmation(order);
|
|
311
|
+
await this.analyticsService.trackOrder(order);
|
|
312
|
+
await this.loyaltyService.addPoints(order.userId, order.total);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### After: Event-Driven
|
|
318
|
+
|
|
319
|
+
```typescript
|
|
320
|
+
// Event definitions
|
|
321
|
+
interface OrderCreatedEvent {
|
|
322
|
+
type: 'ORDER_CREATED';
|
|
323
|
+
payload: {
|
|
324
|
+
orderId: string;
|
|
325
|
+
userId: string;
|
|
326
|
+
items: OrderItem[];
|
|
327
|
+
total: number;
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// Event bus
|
|
332
|
+
class EventBus {
|
|
333
|
+
private handlers: Map<string, Function[]> = new Map();
|
|
334
|
+
|
|
335
|
+
on(eventType: string, handler: Function) {
|
|
336
|
+
const handlers = this.handlers.get(eventType) || [];
|
|
337
|
+
handlers.push(handler);
|
|
338
|
+
this.handlers.set(eventType, handlers);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
emit(event: { type: string; payload: any }) {
|
|
342
|
+
const handlers = this.handlers.get(event.type) || [];
|
|
343
|
+
handlers.forEach(handler => handler(event.payload));
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// Order service - only emits event
|
|
348
|
+
class OrderService {
|
|
349
|
+
constructor(
|
|
350
|
+
private orderRepo: OrderRepository,
|
|
351
|
+
private eventBus: EventBus
|
|
352
|
+
) {}
|
|
353
|
+
|
|
354
|
+
async createOrder(data: CreateOrderDTO) {
|
|
355
|
+
const order = await this.orderRepo.save(data);
|
|
356
|
+
|
|
357
|
+
// Emit event instead of direct calls
|
|
358
|
+
this.eventBus.emit({
|
|
359
|
+
type: 'ORDER_CREATED',
|
|
360
|
+
payload: {
|
|
361
|
+
orderId: order.id,
|
|
362
|
+
userId: order.userId,
|
|
363
|
+
items: order.items,
|
|
364
|
+
total: order.total
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
|
|
368
|
+
return order;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
// Event handlers - decoupled
|
|
373
|
+
class InventoryHandler {
|
|
374
|
+
constructor(eventBus: EventBus) {
|
|
375
|
+
eventBus.on('ORDER_CREATED', this.handleOrderCreated.bind(this));
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
async handleOrderCreated(payload: OrderCreatedEvent['payload']) {
|
|
379
|
+
await this.inventoryService.decrementStock(payload.items);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
class NotificationHandler {
|
|
384
|
+
constructor(eventBus: EventBus) {
|
|
385
|
+
eventBus.on('ORDER_CREATED', this.handleOrderCreated.bind(this));
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
async handleOrderCreated(payload: OrderCreatedEvent['payload']) {
|
|
389
|
+
await this.notificationService.sendOrderConfirmation(payload.orderId);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## API Versioning Architecture
|
|
397
|
+
|
|
398
|
+
Structure for supporting multiple API versions.
|
|
399
|
+
|
|
400
|
+
```
|
|
401
|
+
/src
|
|
402
|
+
├── api/
|
|
403
|
+
│ ├── v1/ # Version 1 (legacy)
|
|
404
|
+
│ │ ├── routes/
|
|
405
|
+
│ │ ├── controllers/
|
|
406
|
+
│ │ └── transformers/ # V1 response format
|
|
407
|
+
│ │
|
|
408
|
+
│ ├── v2/ # Version 2 (current)
|
|
409
|
+
│ │ ├── routes/
|
|
410
|
+
│ │ ├── controllers/
|
|
411
|
+
│ │ └── transformers/ # V2 response format
|
|
412
|
+
│ │
|
|
413
|
+
│ └── shared/ # Shared between versions
|
|
414
|
+
│ ├── middleware/
|
|
415
|
+
│ └── validators/
|
|
416
|
+
│
|
|
417
|
+
├── domain/ # Version-agnostic business logic
|
|
418
|
+
│ ├── services/
|
|
419
|
+
│ └── entities/
|
|
420
|
+
│
|
|
421
|
+
└── infrastructure/ # Database, external services
|
|
422
|
+
├── repositories/
|
|
423
|
+
└── external/
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
```typescript
|
|
427
|
+
// Version-specific transformer
|
|
428
|
+
// api/v1/transformers/user.transformer.ts
|
|
429
|
+
export function transformUserV1(user: User): UserV1Response {
|
|
430
|
+
return {
|
|
431
|
+
id: user.id,
|
|
432
|
+
name: user.fullName, // V1 uses 'name'
|
|
433
|
+
email: user.email
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// api/v2/transformers/user.transformer.ts
|
|
438
|
+
export function transformUserV2(user: User): UserV2Response {
|
|
439
|
+
return {
|
|
440
|
+
id: user.id,
|
|
441
|
+
firstName: user.firstName, // V2 splits name
|
|
442
|
+
lastName: user.lastName,
|
|
443
|
+
emailAddress: user.email // V2 uses 'emailAddress'
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## Migration Strategy
|
|
451
|
+
|
|
452
|
+
### Strangler Fig Pattern
|
|
453
|
+
|
|
454
|
+
Gradually replace old system with new.
|
|
455
|
+
|
|
456
|
+
```markdown
|
|
457
|
+
## Phase 1: Identify Seams
|
|
458
|
+
- Find natural boundaries in the system
|
|
459
|
+
- Identify components that can be extracted
|
|
460
|
+
- Map dependencies
|
|
461
|
+
|
|
462
|
+
## Phase 2: Create Facade
|
|
463
|
+
- Introduce facade/proxy in front of old system
|
|
464
|
+
- All requests go through facade
|
|
465
|
+
- Facade routes to old system initially
|
|
466
|
+
|
|
467
|
+
## Phase 3: Extract Incrementally
|
|
468
|
+
- Move one component at a time to new system
|
|
469
|
+
- Update facade to route to new system
|
|
470
|
+
- Keep old system running as fallback
|
|
471
|
+
|
|
472
|
+
## Phase 4: Complete Migration
|
|
473
|
+
- All traffic goes to new system
|
|
474
|
+
- Monitor for issues
|
|
475
|
+
- Decommission old system
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
```typescript
|
|
479
|
+
// Facade that routes between old and new systems
|
|
480
|
+
class UserFacade {
|
|
481
|
+
constructor(
|
|
482
|
+
private legacyService: LegacyUserService,
|
|
483
|
+
private newService: NewUserService,
|
|
484
|
+
private featureFlags: FeatureFlags
|
|
485
|
+
) {}
|
|
486
|
+
|
|
487
|
+
async getUser(id: string): Promise<User> {
|
|
488
|
+
if (this.featureFlags.isEnabled('new-user-service')) {
|
|
489
|
+
try {
|
|
490
|
+
return await this.newService.getUser(id);
|
|
491
|
+
} catch (error) {
|
|
492
|
+
// Fallback to legacy on error
|
|
493
|
+
console.error('New service failed, falling back:', error);
|
|
494
|
+
return await this.legacyService.getUser(id);
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
return await this.legacyService.getUser(id);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
---
|
|
503
|
+
|
|
504
|
+
## Architecture Refactoring Checklist
|
|
505
|
+
|
|
506
|
+
```markdown
|
|
507
|
+
### Planning
|
|
508
|
+
- [ ] Document current architecture
|
|
509
|
+
- [ ] Identify pain points and goals
|
|
510
|
+
- [ ] Define target architecture
|
|
511
|
+
- [ ] Create migration plan with phases
|
|
512
|
+
- [ ] Identify risks and mitigations
|
|
513
|
+
|
|
514
|
+
### Preparation
|
|
515
|
+
- [ ] Improve test coverage
|
|
516
|
+
- [ ] Set up monitoring and metrics
|
|
517
|
+
- [ ] Create rollback plan
|
|
518
|
+
- [ ] Communicate with stakeholders
|
|
519
|
+
|
|
520
|
+
### Execution
|
|
521
|
+
- [ ] Make small, incremental changes
|
|
522
|
+
- [ ] Feature flag new components
|
|
523
|
+
- [ ] Run parallel systems if needed
|
|
524
|
+
- [ ] Monitor metrics continuously
|
|
525
|
+
|
|
526
|
+
### Completion
|
|
527
|
+
- [ ] Remove feature flags
|
|
528
|
+
- [ ] Clean up legacy code
|
|
529
|
+
- [ ] Update documentation
|
|
530
|
+
- [ ] Conduct post-mortem
|
|
531
|
+
```
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# Code Smells Detection
|
|
2
|
+
|
|
3
|
+
Identify and resolve common code smells.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt Template
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Analyze the following code for code smells and suggest improvements:
|
|
11
|
+
|
|
12
|
+
{code}
|
|
13
|
+
|
|
14
|
+
Look for:
|
|
15
|
+
1. Long Methods - Functions doing too much
|
|
16
|
+
2. Large Classes - Classes with too many responsibilities
|
|
17
|
+
3. Duplicate Code - Similar code in multiple places
|
|
18
|
+
4. Dead Code - Unused functions, variables, imports
|
|
19
|
+
5. God Objects - Objects that know/do too much
|
|
20
|
+
6. Feature Envy - Methods using other class data excessively
|
|
21
|
+
7. Data Clumps - Data items that appear together repeatedly
|
|
22
|
+
8. Primitive Obsession - Overuse of primitives instead of objects
|
|
23
|
+
9. Long Parameter Lists - Functions with many parameters
|
|
24
|
+
10. Comments - Excessive comments hiding complex code
|
|
25
|
+
|
|
26
|
+
For each smell found:
|
|
27
|
+
- Describe the issue
|
|
28
|
+
- Explain why it's problematic
|
|
29
|
+
- Suggest a refactoring approach
|
|
30
|
+
- Provide example improved code
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Smell Categories
|
|
36
|
+
|
|
37
|
+
### Bloaters
|
|
38
|
+
|
|
39
|
+
**Long Method:**
|
|
40
|
+
```typescript
|
|
41
|
+
// ❌ Bad: Method doing too much
|
|
42
|
+
async function processOrder(order: Order) {
|
|
43
|
+
// Validate order (20 lines)
|
|
44
|
+
// Calculate totals (15 lines)
|
|
45
|
+
// Apply discounts (25 lines)
|
|
46
|
+
// Process payment (30 lines)
|
|
47
|
+
// Send notifications (20 lines)
|
|
48
|
+
// Update inventory (15 lines)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// ✅ Good: Extracted methods
|
|
52
|
+
async function processOrder(order: Order) {
|
|
53
|
+
validateOrder(order);
|
|
54
|
+
const totals = calculateTotals(order);
|
|
55
|
+
const finalPrice = applyDiscounts(totals, order.customer);
|
|
56
|
+
await processPayment(order, finalPrice);
|
|
57
|
+
await sendNotifications(order);
|
|
58
|
+
await updateInventory(order.items);
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Large Class:**
|
|
63
|
+
```typescript
|
|
64
|
+
// ❌ Bad: Class handling too much
|
|
65
|
+
class UserManager {
|
|
66
|
+
createUser() {}
|
|
67
|
+
updateUser() {}
|
|
68
|
+
deleteUser() {}
|
|
69
|
+
authenticateUser() {}
|
|
70
|
+
sendPasswordReset() {}
|
|
71
|
+
generateReport() {}
|
|
72
|
+
exportToCSV() {}
|
|
73
|
+
importFromCSV() {}
|
|
74
|
+
validateEmail() {}
|
|
75
|
+
// ... 20 more methods
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// ✅ Good: Split by responsibility
|
|
79
|
+
class UserService { /* CRUD operations */ }
|
|
80
|
+
class AuthService { /* Authentication */ }
|
|
81
|
+
class UserReportService { /* Reporting */ }
|
|
82
|
+
class UserImportExportService { /* Import/Export */ }
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Object-Orientation Abusers
|
|
86
|
+
|
|
87
|
+
**Switch Statements:**
|
|
88
|
+
```typescript
|
|
89
|
+
// ❌ Bad: Switch on type
|
|
90
|
+
function getPrice(animal: Animal) {
|
|
91
|
+
switch (animal.type) {
|
|
92
|
+
case 'dog': return 50;
|
|
93
|
+
case 'cat': return 40;
|
|
94
|
+
case 'bird': return 20;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// ✅ Good: Polymorphism
|
|
99
|
+
interface Animal {
|
|
100
|
+
getPrice(): number;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
class Dog implements Animal {
|
|
104
|
+
getPrice() { return 50; }
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Change Preventers
|
|
109
|
+
|
|
110
|
+
**Divergent Change:**
|
|
111
|
+
```typescript
|
|
112
|
+
// ❌ Bad: Class changes for many reasons
|
|
113
|
+
class Employee {
|
|
114
|
+
calculatePay() {} // Changes for pay rules
|
|
115
|
+
reportHours() {} // Changes for reporting format
|
|
116
|
+
saveToDatabase() {} // Changes for DB schema
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// ✅ Good: Single responsibility
|
|
120
|
+
class PayCalculator { calculatePay() {} }
|
|
121
|
+
class HoursReporter { reportHours() {} }
|
|
122
|
+
class EmployeeRepository { save() {} }
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Detection Commands
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Find long methods
|
|
131
|
+
/refactor smell long-methods --threshold 30
|
|
132
|
+
|
|
133
|
+
# Find large files
|
|
134
|
+
/refactor smell large-files --threshold 500
|
|
135
|
+
|
|
136
|
+
# Find duplicate code
|
|
137
|
+
/refactor smell duplicates
|
|
138
|
+
|
|
139
|
+
# Find complex functions
|
|
140
|
+
/refactor smell complexity --threshold 10
|
|
141
|
+
|
|
142
|
+
# Full analysis
|
|
143
|
+
/refactor smell all
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Automated Fixes
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Extract long method
|
|
152
|
+
/refactor extract-method {function_name}
|
|
153
|
+
|
|
154
|
+
# Split large class
|
|
155
|
+
/refactor split-class {class_name}
|
|
156
|
+
|
|
157
|
+
# Remove dead code
|
|
158
|
+
/refactor remove-dead-code
|
|
159
|
+
|
|
160
|
+
# Inline trivial methods
|
|
161
|
+
/refactor inline-trivial
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Priority Matrix
|
|
167
|
+
|
|
168
|
+
| Smell | Impact | Fix Difficulty | Priority |
|
|
169
|
+
|-------|--------|----------------|----------|
|
|
170
|
+
| Dead Code | Low | Easy | Low |
|
|
171
|
+
| Long Method | High | Medium | High |
|
|
172
|
+
| Duplicate Code | High | Medium | High |
|
|
173
|
+
| Large Class | High | Hard | Medium |
|
|
174
|
+
| God Object | Critical | Hard | High |
|