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,265 @@
|
|
|
1
|
+
# Performance Analysis
|
|
2
|
+
|
|
3
|
+
Systematic approach to identifying performance issues.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt Template
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Analyze the performance of this code:
|
|
11
|
+
|
|
12
|
+
{code}
|
|
13
|
+
|
|
14
|
+
Context:
|
|
15
|
+
- This code runs: {frequency - once/per request/continuously}
|
|
16
|
+
- Expected data size: {size}
|
|
17
|
+
- Current performance: {metrics if available}
|
|
18
|
+
- Target performance: {target}
|
|
19
|
+
|
|
20
|
+
Please analyze:
|
|
21
|
+
1. Time complexity (Big O)
|
|
22
|
+
2. Space complexity
|
|
23
|
+
3. Potential bottlenecks
|
|
24
|
+
4. Unnecessary operations
|
|
25
|
+
5. Optimization opportunities
|
|
26
|
+
|
|
27
|
+
Provide:
|
|
28
|
+
- Performance assessment
|
|
29
|
+
- Specific issues found
|
|
30
|
+
- Optimized version with explanations
|
|
31
|
+
- Benchmarking approach
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Analysis Categories
|
|
37
|
+
|
|
38
|
+
### Time Complexity
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
// ❌ O(n²) - Nested loops
|
|
42
|
+
function findDuplicates(arr: number[]) {
|
|
43
|
+
const duplicates = [];
|
|
44
|
+
for (let i = 0; i < arr.length; i++) {
|
|
45
|
+
for (let j = i + 1; j < arr.length; j++) {
|
|
46
|
+
if (arr[i] === arr[j]) {
|
|
47
|
+
duplicates.push(arr[i]);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return duplicates;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// ✅ O(n) - Using Set
|
|
55
|
+
function findDuplicates(arr: number[]) {
|
|
56
|
+
const seen = new Set();
|
|
57
|
+
const duplicates = new Set();
|
|
58
|
+
|
|
59
|
+
for (const num of arr) {
|
|
60
|
+
if (seen.has(num)) {
|
|
61
|
+
duplicates.add(num);
|
|
62
|
+
}
|
|
63
|
+
seen.add(num);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return [...duplicates];
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Space Complexity
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
// ❌ O(n) space - Creating new arrays
|
|
74
|
+
function transform(arr: number[]) {
|
|
75
|
+
return arr
|
|
76
|
+
.filter(x => x > 0) // New array
|
|
77
|
+
.map(x => x * 2) // New array
|
|
78
|
+
.filter(x => x < 100); // New array
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// ✅ O(1) space - In-place or single pass
|
|
82
|
+
function* transform(arr: number[]) {
|
|
83
|
+
for (const x of arr) {
|
|
84
|
+
if (x > 0) {
|
|
85
|
+
const doubled = x * 2;
|
|
86
|
+
if (doubled < 100) {
|
|
87
|
+
yield doubled;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Memory Leaks
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
// ❌ Memory leak - Event listener not removed
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
window.addEventListener('resize', handleResize);
|
|
100
|
+
// Missing cleanup!
|
|
101
|
+
}, []);
|
|
102
|
+
|
|
103
|
+
// ✅ Proper cleanup
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
window.addEventListener('resize', handleResize);
|
|
106
|
+
return () => {
|
|
107
|
+
window.removeEventListener('resize', handleResize);
|
|
108
|
+
};
|
|
109
|
+
}, []);
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Unnecessary Renders
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
// ❌ Rerenders on every parent render
|
|
116
|
+
function Child({ items, onClick }) {
|
|
117
|
+
return items.map(item => (
|
|
118
|
+
<button onClick={() => onClick(item.id)}> // New function each render
|
|
119
|
+
{item.name}
|
|
120
|
+
</button>
|
|
121
|
+
));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// ✅ Memoized callback
|
|
125
|
+
const Child = memo(function Child({ items, onClick }) {
|
|
126
|
+
const handleClick = useCallback((id: string) => {
|
|
127
|
+
onClick(id);
|
|
128
|
+
}, [onClick]);
|
|
129
|
+
|
|
130
|
+
return items.map(item => (
|
|
131
|
+
<button onClick={() => handleClick(item.id)}>
|
|
132
|
+
{item.name}
|
|
133
|
+
</button>
|
|
134
|
+
));
|
|
135
|
+
});
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Optimization Techniques
|
|
141
|
+
|
|
142
|
+
### Caching/Memoization
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
// Cache expensive computations
|
|
146
|
+
const expensiveResult = useMemo(() => {
|
|
147
|
+
return items.reduce((acc, item) => {
|
|
148
|
+
// Complex calculation
|
|
149
|
+
return acc + complexCalculation(item);
|
|
150
|
+
}, 0);
|
|
151
|
+
}, [items]);
|
|
152
|
+
|
|
153
|
+
// Cache function references
|
|
154
|
+
const handleSubmit = useCallback((data) => {
|
|
155
|
+
submitForm(data);
|
|
156
|
+
}, [submitForm]);
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Lazy Loading
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
// Lazy load components
|
|
163
|
+
const HeavyComponent = lazy(() => import('./HeavyComponent'));
|
|
164
|
+
|
|
165
|
+
function App() {
|
|
166
|
+
return (
|
|
167
|
+
<Suspense fallback={<Loading />}>
|
|
168
|
+
<HeavyComponent />
|
|
169
|
+
</Suspense>
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Lazy load data
|
|
174
|
+
function useData() {
|
|
175
|
+
const [data, setData] = useState(null);
|
|
176
|
+
|
|
177
|
+
useEffect(() => {
|
|
178
|
+
// Only load when needed
|
|
179
|
+
if (shouldLoadData) {
|
|
180
|
+
fetchData().then(setData);
|
|
181
|
+
}
|
|
182
|
+
}, [shouldLoadData]);
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Debouncing/Throttling
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
// Debounce search input
|
|
190
|
+
const debouncedSearch = useMemo(
|
|
191
|
+
() => debounce((query: string) => {
|
|
192
|
+
searchApi(query);
|
|
193
|
+
}, 300),
|
|
194
|
+
[]
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
// Throttle scroll handler
|
|
198
|
+
const throttledScroll = useMemo(
|
|
199
|
+
() => throttle(() => {
|
|
200
|
+
updateScrollPosition();
|
|
201
|
+
}, 100),
|
|
202
|
+
[]
|
|
203
|
+
);
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Virtualization
|
|
207
|
+
|
|
208
|
+
```typescript
|
|
209
|
+
// Virtual list for large datasets
|
|
210
|
+
import { FixedSizeList } from 'react-window';
|
|
211
|
+
|
|
212
|
+
function VirtualList({ items }) {
|
|
213
|
+
return (
|
|
214
|
+
<FixedSizeList
|
|
215
|
+
height={400}
|
|
216
|
+
width={300}
|
|
217
|
+
itemCount={items.length}
|
|
218
|
+
itemSize={50}
|
|
219
|
+
>
|
|
220
|
+
{({ index, style }) => (
|
|
221
|
+
<div style={style}>{items[index].name}</div>
|
|
222
|
+
)}
|
|
223
|
+
</FixedSizeList>
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Benchmarking
|
|
231
|
+
|
|
232
|
+
```typescript
|
|
233
|
+
// Simple benchmark
|
|
234
|
+
function benchmark(fn: () => void, iterations = 1000) {
|
|
235
|
+
const start = performance.now();
|
|
236
|
+
for (let i = 0; i < iterations; i++) {
|
|
237
|
+
fn();
|
|
238
|
+
}
|
|
239
|
+
const end = performance.now();
|
|
240
|
+
return (end - start) / iterations;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Compare implementations
|
|
244
|
+
const timeA = benchmark(() => implementationA(testData));
|
|
245
|
+
const timeB = benchmark(() => implementationB(testData));
|
|
246
|
+
console.log(`A: ${timeA}ms, B: ${timeB}ms`);
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Performance Commands
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# Analyze function complexity
|
|
255
|
+
/perf complexity <function>
|
|
256
|
+
|
|
257
|
+
# Find memory leaks
|
|
258
|
+
/perf memory-leak <component>
|
|
259
|
+
|
|
260
|
+
# Suggest optimizations
|
|
261
|
+
/perf optimize <code>
|
|
262
|
+
|
|
263
|
+
# Generate benchmark
|
|
264
|
+
/perf benchmark <function>
|
|
265
|
+
```
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
# Performance Optimization Prompt
|
|
2
|
+
|
|
3
|
+
Identify and fix performance issues in code.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt Template
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
## Performance Optimization Review
|
|
11
|
+
|
|
12
|
+
Analyze the following code for performance issues:
|
|
13
|
+
|
|
14
|
+
```{{language}}
|
|
15
|
+
{{code}}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Check For:
|
|
19
|
+
|
|
20
|
+
**Rendering Performance (React)**
|
|
21
|
+
- [ ] Unnecessary re-renders
|
|
22
|
+
- [ ] Missing memoization
|
|
23
|
+
- [ ] Expensive calculations in render
|
|
24
|
+
- [ ] Large component trees
|
|
25
|
+
|
|
26
|
+
**Data Fetching**
|
|
27
|
+
- [ ] N+1 queries
|
|
28
|
+
- [ ] Missing caching
|
|
29
|
+
- [ ] Unoptimized payloads
|
|
30
|
+
- [ ] Waterfall requests
|
|
31
|
+
|
|
32
|
+
**Memory**
|
|
33
|
+
- [ ] Memory leaks
|
|
34
|
+
- [ ] Large object retention
|
|
35
|
+
- [ ] Event listener cleanup
|
|
36
|
+
|
|
37
|
+
**Bundle Size**
|
|
38
|
+
- [ ] Large imports
|
|
39
|
+
- [ ] Tree shaking issues
|
|
40
|
+
- [ ] Unnecessary dependencies
|
|
41
|
+
|
|
42
|
+
### Output Format:
|
|
43
|
+
For each issue:
|
|
44
|
+
1. Performance impact (High/Medium/Low)
|
|
45
|
+
2. Current behavior
|
|
46
|
+
3. Issue explanation
|
|
47
|
+
4. Optimized solution
|
|
48
|
+
5. Expected improvement
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## React Optimization Patterns
|
|
54
|
+
|
|
55
|
+
### Prevent Unnecessary Re-renders
|
|
56
|
+
|
|
57
|
+
```tsx
|
|
58
|
+
// ❌ Re-renders on every parent render
|
|
59
|
+
function UserList({ users }) {
|
|
60
|
+
return users.map(user => <UserCard user={user} />);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// ✅ Memoized - only re-renders when user changes
|
|
64
|
+
const UserCard = memo(function UserCard({ user }) {
|
|
65
|
+
return <div>{user.name}</div>;
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// ✅ With custom comparison
|
|
69
|
+
const UserCard = memo(
|
|
70
|
+
function UserCard({ user }) {
|
|
71
|
+
return <div>{user.name}</div>;
|
|
72
|
+
},
|
|
73
|
+
(prevProps, nextProps) => prevProps.user.id === nextProps.user.id
|
|
74
|
+
);
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Memoize Expensive Calculations
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
// ❌ Recalculates on every render
|
|
81
|
+
function DataTable({ data, filter }) {
|
|
82
|
+
const filteredData = data.filter(item =>
|
|
83
|
+
item.name.toLowerCase().includes(filter.toLowerCase())
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
return <Table data={filteredData} />;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// ✅ Only recalculates when dependencies change
|
|
90
|
+
function DataTable({ data, filter }) {
|
|
91
|
+
const filteredData = useMemo(
|
|
92
|
+
() => data.filter(item =>
|
|
93
|
+
item.name.toLowerCase().includes(filter.toLowerCase())
|
|
94
|
+
),
|
|
95
|
+
[data, filter]
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
return <Table data={filteredData} />;
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Stable Callback References
|
|
103
|
+
|
|
104
|
+
```tsx
|
|
105
|
+
// ❌ New function on every render
|
|
106
|
+
function SearchForm({ onSearch }) {
|
|
107
|
+
return (
|
|
108
|
+
<input onChange={(e) => onSearch(e.target.value)} />
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// ✅ Stable reference
|
|
113
|
+
function SearchForm({ onSearch }) {
|
|
114
|
+
const handleChange = useCallback(
|
|
115
|
+
(e: ChangeEvent<HTMLInputElement>) => onSearch(e.target.value),
|
|
116
|
+
[onSearch]
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
return <input onChange={handleChange} />;
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Virtualize Long Lists
|
|
124
|
+
|
|
125
|
+
```tsx
|
|
126
|
+
// ❌ Renders all 10,000 items
|
|
127
|
+
function UserList({ users }) {
|
|
128
|
+
return (
|
|
129
|
+
<div>
|
|
130
|
+
{users.map(user => <UserCard key={user.id} user={user} />)}
|
|
131
|
+
</div>
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// ✅ Only renders visible items
|
|
136
|
+
import { FixedSizeList } from 'react-window';
|
|
137
|
+
|
|
138
|
+
function UserList({ users }) {
|
|
139
|
+
return (
|
|
140
|
+
<FixedSizeList
|
|
141
|
+
height={400}
|
|
142
|
+
itemCount={users.length}
|
|
143
|
+
itemSize={50}
|
|
144
|
+
>
|
|
145
|
+
{({ index, style }) => (
|
|
146
|
+
<div style={style}>
|
|
147
|
+
<UserCard user={users[index]} />
|
|
148
|
+
</div>
|
|
149
|
+
)}
|
|
150
|
+
</FixedSizeList>
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Data Fetching Optimization
|
|
158
|
+
|
|
159
|
+
### Avoid N+1 Queries
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
// ❌ N+1 queries
|
|
163
|
+
async function getPostsWithAuthors() {
|
|
164
|
+
const posts = await db.post.findMany();
|
|
165
|
+
for (const post of posts) {
|
|
166
|
+
post.author = await db.user.findUnique({
|
|
167
|
+
where: { id: post.authorId }
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
return posts;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// ✅ Single query with include
|
|
174
|
+
async function getPostsWithAuthors() {
|
|
175
|
+
return db.post.findMany({
|
|
176
|
+
include: { author: true }
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Parallel Fetching
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
// ❌ Sequential - slow
|
|
185
|
+
async function getDashboardData() {
|
|
186
|
+
const users = await getUsers();
|
|
187
|
+
const orders = await getOrders();
|
|
188
|
+
const stats = await getStats();
|
|
189
|
+
return { users, orders, stats };
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// ✅ Parallel - fast
|
|
193
|
+
async function getDashboardData() {
|
|
194
|
+
const [users, orders, stats] = await Promise.all([
|
|
195
|
+
getUsers(),
|
|
196
|
+
getOrders(),
|
|
197
|
+
getStats()
|
|
198
|
+
]);
|
|
199
|
+
return { users, orders, stats };
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Response Caching
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
// React Query with caching
|
|
207
|
+
const { data } = useQuery({
|
|
208
|
+
queryKey: ['users'],
|
|
209
|
+
queryFn: fetchUsers,
|
|
210
|
+
staleTime: 5 * 60 * 1000, // 5 minutes
|
|
211
|
+
cacheTime: 30 * 60 * 1000, // 30 minutes
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
// Server-side caching
|
|
215
|
+
import { unstable_cache } from 'next/cache';
|
|
216
|
+
|
|
217
|
+
const getCachedUsers = unstable_cache(
|
|
218
|
+
async () => db.user.findMany(),
|
|
219
|
+
['users'],
|
|
220
|
+
{ revalidate: 60 } // 1 minute
|
|
221
|
+
);
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Bundle Optimization
|
|
227
|
+
|
|
228
|
+
### Dynamic Imports
|
|
229
|
+
|
|
230
|
+
```tsx
|
|
231
|
+
// ❌ Loads on initial bundle
|
|
232
|
+
import { HeavyChart } from 'heavy-chart-library';
|
|
233
|
+
|
|
234
|
+
// ✅ Loads only when needed
|
|
235
|
+
const HeavyChart = dynamic(() => import('heavy-chart-library'), {
|
|
236
|
+
loading: () => <Spinner />,
|
|
237
|
+
ssr: false
|
|
238
|
+
});
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Tree Shaking
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
// ❌ Imports entire library
|
|
245
|
+
import _ from 'lodash';
|
|
246
|
+
const result = _.debounce(fn, 300);
|
|
247
|
+
|
|
248
|
+
// ✅ Imports only needed function
|
|
249
|
+
import debounce from 'lodash/debounce';
|
|
250
|
+
const result = debounce(fn, 300);
|
|
251
|
+
|
|
252
|
+
// ✅ Or use lodash-es for better tree shaking
|
|
253
|
+
import { debounce } from 'lodash-es';
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Analyze Bundle
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
# Next.js bundle analyzer
|
|
260
|
+
npm install @next/bundle-analyzer
|
|
261
|
+
|
|
262
|
+
# next.config.js
|
|
263
|
+
const withBundleAnalyzer = require('@next/bundle-analyzer')({
|
|
264
|
+
enabled: process.env.ANALYZE === 'true',
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
module.exports = withBundleAnalyzer({});
|
|
268
|
+
|
|
269
|
+
# Run analysis
|
|
270
|
+
ANALYZE=true npm run build
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Memory Optimization
|
|
276
|
+
|
|
277
|
+
### Cleanup Effects
|
|
278
|
+
|
|
279
|
+
```tsx
|
|
280
|
+
// ❌ Memory leak - no cleanup
|
|
281
|
+
useEffect(() => {
|
|
282
|
+
window.addEventListener('resize', handleResize);
|
|
283
|
+
}, []);
|
|
284
|
+
|
|
285
|
+
// ✅ Proper cleanup
|
|
286
|
+
useEffect(() => {
|
|
287
|
+
window.addEventListener('resize', handleResize);
|
|
288
|
+
return () => window.removeEventListener('resize', handleResize);
|
|
289
|
+
}, []);
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Avoid Closures Over Large Objects
|
|
293
|
+
|
|
294
|
+
```tsx
|
|
295
|
+
// ❌ Keeps large array in memory
|
|
296
|
+
function DataProcessor({ largeData }) {
|
|
297
|
+
const processedData = useMemo(() => {
|
|
298
|
+
return largeData.map(item => ({ ...item, processed: true }));
|
|
299
|
+
}, [largeData]);
|
|
300
|
+
|
|
301
|
+
// Handler keeps reference to largeData
|
|
302
|
+
const handleClick = () => {
|
|
303
|
+
console.log(largeData.length);
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
return <button onClick={handleClick}>Process</button>;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// ✅ Only store what's needed
|
|
310
|
+
function DataProcessor({ largeData }) {
|
|
311
|
+
const dataLength = largeData.length;
|
|
312
|
+
|
|
313
|
+
const handleClick = () => {
|
|
314
|
+
console.log(dataLength);
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
return <button onClick={handleClick}>Process</button>;
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## Performance Testing
|
|
324
|
+
|
|
325
|
+
```typescript
|
|
326
|
+
// Measure component render time
|
|
327
|
+
import { Profiler } from 'react';
|
|
328
|
+
|
|
329
|
+
function onRender(id, phase, actualDuration) {
|
|
330
|
+
console.log(`${id} ${phase}: ${actualDuration}ms`);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
<Profiler id="UserList" onRender={onRender}>
|
|
334
|
+
<UserList users={users} />
|
|
335
|
+
</Profiler>
|
|
336
|
+
|
|
337
|
+
// Benchmark test
|
|
338
|
+
describe('Performance', () => {
|
|
339
|
+
it('should render 1000 items in under 100ms', () => {
|
|
340
|
+
const start = performance.now();
|
|
341
|
+
render(<UserList users={generateUsers(1000)} />);
|
|
342
|
+
const duration = performance.now() - start;
|
|
343
|
+
|
|
344
|
+
expect(duration).toBeLessThan(100);
|
|
345
|
+
});
|
|
346
|
+
});
|
|
347
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Refactoring Prompts
|
|
2
|
+
|
|
3
|
+
AI-assisted code refactoring workflows.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Available Prompts
|
|
8
|
+
|
|
9
|
+
| Prompt | Use Case |
|
|
10
|
+
|--------|----------|
|
|
11
|
+
| [code-smells.md](./code-smells.md) | Identify and fix code smells |
|
|
12
|
+
| [extract-patterns.md](./extract-patterns.md) | Extract reusable patterns |
|
|
13
|
+
| [modernize.md](./modernize.md) | Update to modern patterns |
|
|
14
|
+
| [simplify.md](./simplify.md) | Reduce complexity |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Quick Commands
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
/refactor identify # Find refactoring opportunities
|
|
22
|
+
/refactor plan # Create refactoring plan
|
|
23
|
+
/refactor execute # Perform refactoring
|
|
24
|
+
/refactor validate # Verify refactoring
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Refactoring Workflow
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
1. Identify Opportunities
|
|
33
|
+
- Code smells
|
|
34
|
+
- Duplications
|
|
35
|
+
- Complex functions
|
|
36
|
+
|
|
37
|
+
2. Plan Refactoring
|
|
38
|
+
- Prioritize changes
|
|
39
|
+
- Identify risks
|
|
40
|
+
- Plan tests
|
|
41
|
+
|
|
42
|
+
3. Execute Incrementally
|
|
43
|
+
- Small, focused changes
|
|
44
|
+
- Maintain tests
|
|
45
|
+
- Preserve behavior
|
|
46
|
+
|
|
47
|
+
4. Validate
|
|
48
|
+
- Run tests
|
|
49
|
+
- Compare behavior
|
|
50
|
+
- Review changes
|
|
51
|
+
```
|