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,381 @@
|
|
|
1
|
+
# Performance Debugging Prompt
|
|
2
|
+
|
|
3
|
+
Identify and resolve performance issues.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt Template
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
## Performance Issue Analysis
|
|
11
|
+
|
|
12
|
+
My application has the following performance issue:
|
|
13
|
+
|
|
14
|
+
**Symptom:**
|
|
15
|
+
{{description of slow behavior}}
|
|
16
|
+
|
|
17
|
+
**Metrics:**
|
|
18
|
+
- Load time: {{time}}
|
|
19
|
+
- Response time: {{time}}
|
|
20
|
+
- Memory usage: {{amount}}
|
|
21
|
+
- CPU usage: {{percentage}}
|
|
22
|
+
|
|
23
|
+
**When it occurs:**
|
|
24
|
+
- [ ] On initial load
|
|
25
|
+
- [ ] During user interaction
|
|
26
|
+
- [ ] Over time (memory leak)
|
|
27
|
+
- [ ] With large data sets
|
|
28
|
+
- [ ] Intermittently
|
|
29
|
+
|
|
30
|
+
**Code/Component:**
|
|
31
|
+
```{{language}}
|
|
32
|
+
{{relevant code}}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Analyze For:
|
|
36
|
+
1. Performance bottlenecks
|
|
37
|
+
2. Resource-intensive operations
|
|
38
|
+
3. Memory leaks
|
|
39
|
+
4. Unnecessary re-renders (React)
|
|
40
|
+
5. Unoptimized queries/API calls
|
|
41
|
+
6. Bundle size issues
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Performance Debugging Tools
|
|
47
|
+
|
|
48
|
+
### Browser DevTools Profiling
|
|
49
|
+
|
|
50
|
+
```markdown
|
|
51
|
+
## Chrome DevTools Performance Tab
|
|
52
|
+
|
|
53
|
+
### Recording a Profile
|
|
54
|
+
1. Open DevTools (F12)
|
|
55
|
+
2. Go to Performance tab
|
|
56
|
+
3. Click Record
|
|
57
|
+
4. Perform the slow action
|
|
58
|
+
5. Click Stop
|
|
59
|
+
|
|
60
|
+
### What to Look For
|
|
61
|
+
- Long tasks (red triangles)
|
|
62
|
+
- JavaScript execution time
|
|
63
|
+
- Layout thrashing
|
|
64
|
+
- Paint events
|
|
65
|
+
- Network waterfall
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### React DevTools Profiler
|
|
69
|
+
|
|
70
|
+
```tsx
|
|
71
|
+
// Wrap components to profile
|
|
72
|
+
import { Profiler } from 'react';
|
|
73
|
+
|
|
74
|
+
function onRenderCallback(
|
|
75
|
+
id, // Component name
|
|
76
|
+
phase, // "mount" or "update"
|
|
77
|
+
actualDuration, // Time spent rendering
|
|
78
|
+
baseDuration, // Estimated time without memoization
|
|
79
|
+
startTime, // When React started rendering
|
|
80
|
+
commitTime // When React committed updates
|
|
81
|
+
) {
|
|
82
|
+
console.log(`${id} (${phase}): ${actualDuration.toFixed(2)}ms`);
|
|
83
|
+
|
|
84
|
+
if (actualDuration > 16) {
|
|
85
|
+
console.warn(`Slow render detected in ${id}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
<Profiler id="UserList" onRenderCallback={onRenderCallback}>
|
|
90
|
+
<UserList users={users} />
|
|
91
|
+
</Profiler>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Common Performance Issues
|
|
97
|
+
|
|
98
|
+
### 1. Unnecessary Re-renders
|
|
99
|
+
|
|
100
|
+
```tsx
|
|
101
|
+
// ❌ Problem: Object/array created on every render
|
|
102
|
+
function UserList({ users }) {
|
|
103
|
+
return (
|
|
104
|
+
<List
|
|
105
|
+
items={users}
|
|
106
|
+
style={{ margin: 10 }} // New object every render!
|
|
107
|
+
onSelect={(id) => console.log(id)} // New function every render!
|
|
108
|
+
/>
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// ✅ Solution: Memoize values
|
|
113
|
+
function UserList({ users }) {
|
|
114
|
+
const style = useMemo(() => ({ margin: 10 }), []);
|
|
115
|
+
const handleSelect = useCallback((id) => console.log(id), []);
|
|
116
|
+
|
|
117
|
+
return (
|
|
118
|
+
<List
|
|
119
|
+
items={users}
|
|
120
|
+
style={style}
|
|
121
|
+
onSelect={handleSelect}
|
|
122
|
+
/>
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 2. Expensive Calculations in Render
|
|
128
|
+
|
|
129
|
+
```tsx
|
|
130
|
+
// ❌ Problem: Filtering on every render
|
|
131
|
+
function DataTable({ data, searchTerm }) {
|
|
132
|
+
// This runs on EVERY render, even unrelated state changes
|
|
133
|
+
const filtered = data.filter(item =>
|
|
134
|
+
item.name.toLowerCase().includes(searchTerm.toLowerCase())
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
return <Table data={filtered} />;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// ✅ Solution: Memoize calculation
|
|
141
|
+
function DataTable({ data, searchTerm }) {
|
|
142
|
+
const filtered = useMemo(() =>
|
|
143
|
+
data.filter(item =>
|
|
144
|
+
item.name.toLowerCase().includes(searchTerm.toLowerCase())
|
|
145
|
+
),
|
|
146
|
+
[data, searchTerm] // Only recalculate when these change
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
return <Table data={filtered} />;
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 3. Memory Leaks
|
|
154
|
+
|
|
155
|
+
```tsx
|
|
156
|
+
// ❌ Problem: Event listener not cleaned up
|
|
157
|
+
useEffect(() => {
|
|
158
|
+
window.addEventListener('resize', handleResize);
|
|
159
|
+
// Missing cleanup!
|
|
160
|
+
}, []);
|
|
161
|
+
|
|
162
|
+
// ❌ Problem: Interval not cleared
|
|
163
|
+
useEffect(() => {
|
|
164
|
+
setInterval(pollData, 1000);
|
|
165
|
+
// Missing cleanup!
|
|
166
|
+
}, []);
|
|
167
|
+
|
|
168
|
+
// ✅ Solution: Always cleanup
|
|
169
|
+
useEffect(() => {
|
|
170
|
+
window.addEventListener('resize', handleResize);
|
|
171
|
+
const interval = setInterval(pollData, 1000);
|
|
172
|
+
|
|
173
|
+
return () => {
|
|
174
|
+
window.removeEventListener('resize', handleResize);
|
|
175
|
+
clearInterval(interval);
|
|
176
|
+
};
|
|
177
|
+
}, []);
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### 4. Large List Rendering
|
|
181
|
+
|
|
182
|
+
```tsx
|
|
183
|
+
// ❌ Problem: Rendering all 10,000 items
|
|
184
|
+
function UserList({ users }) {
|
|
185
|
+
return (
|
|
186
|
+
<div>
|
|
187
|
+
{users.map(user => <UserCard key={user.id} user={user} />)}
|
|
188
|
+
</div>
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// ✅ Solution: Virtualization
|
|
193
|
+
import { FixedSizeList } from 'react-window';
|
|
194
|
+
|
|
195
|
+
function UserList({ users }) {
|
|
196
|
+
const Row = ({ index, style }) => (
|
|
197
|
+
<div style={style}>
|
|
198
|
+
<UserCard user={users[index]} />
|
|
199
|
+
</div>
|
|
200
|
+
);
|
|
201
|
+
|
|
202
|
+
return (
|
|
203
|
+
<FixedSizeList
|
|
204
|
+
height={600}
|
|
205
|
+
itemCount={users.length}
|
|
206
|
+
itemSize={80}
|
|
207
|
+
>
|
|
208
|
+
{Row}
|
|
209
|
+
</FixedSizeList>
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### 5. Network Waterfall
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
// ❌ Problem: Sequential requests
|
|
218
|
+
async function loadDashboard() {
|
|
219
|
+
const users = await fetchUsers();
|
|
220
|
+
const posts = await fetchPosts();
|
|
221
|
+
const comments = await fetchComments();
|
|
222
|
+
return { users, posts, comments };
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// ✅ Solution: Parallel requests
|
|
226
|
+
async function loadDashboard() {
|
|
227
|
+
const [users, posts, comments] = await Promise.all([
|
|
228
|
+
fetchUsers(),
|
|
229
|
+
fetchPosts(),
|
|
230
|
+
fetchComments()
|
|
231
|
+
]);
|
|
232
|
+
return { users, posts, comments };
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 6. Bundle Size
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
// ❌ Problem: Importing entire library
|
|
240
|
+
import _ from 'lodash';
|
|
241
|
+
const result = _.debounce(fn, 300);
|
|
242
|
+
|
|
243
|
+
// ✅ Solution: Import specific function
|
|
244
|
+
import debounce from 'lodash/debounce';
|
|
245
|
+
const result = debounce(fn, 300);
|
|
246
|
+
|
|
247
|
+
// ✅ Better: Use lodash-es for tree shaking
|
|
248
|
+
import { debounce } from 'lodash-es';
|
|
249
|
+
|
|
250
|
+
// ✅ Or: Native implementation
|
|
251
|
+
function debounce(fn, delay) {
|
|
252
|
+
let timeoutId;
|
|
253
|
+
return (...args) => {
|
|
254
|
+
clearTimeout(timeoutId);
|
|
255
|
+
timeoutId = setTimeout(() => fn(...args), delay);
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Performance Measurement
|
|
263
|
+
|
|
264
|
+
### Console Timing
|
|
265
|
+
|
|
266
|
+
```typescript
|
|
267
|
+
// Simple timing
|
|
268
|
+
console.time('operation');
|
|
269
|
+
await expensiveOperation();
|
|
270
|
+
console.timeEnd('operation'); // Logs: operation: 234.56ms
|
|
271
|
+
|
|
272
|
+
// Performance API for precision
|
|
273
|
+
const start = performance.now();
|
|
274
|
+
await expensiveOperation();
|
|
275
|
+
const duration = performance.now() - start;
|
|
276
|
+
console.log(`Operation took ${duration}ms`);
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### Performance Marks
|
|
280
|
+
|
|
281
|
+
```typescript
|
|
282
|
+
// Create marks for complex flows
|
|
283
|
+
performance.mark('fetch-start');
|
|
284
|
+
const data = await fetchData();
|
|
285
|
+
performance.mark('fetch-end');
|
|
286
|
+
|
|
287
|
+
performance.mark('process-start');
|
|
288
|
+
const processed = processData(data);
|
|
289
|
+
performance.mark('process-end');
|
|
290
|
+
|
|
291
|
+
// Measure between marks
|
|
292
|
+
performance.measure('fetch', 'fetch-start', 'fetch-end');
|
|
293
|
+
performance.measure('process', 'process-start', 'process-end');
|
|
294
|
+
|
|
295
|
+
// Get measurements
|
|
296
|
+
const measures = performance.getEntriesByType('measure');
|
|
297
|
+
measures.forEach(m => console.log(`${m.name}: ${m.duration}ms`));
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### React Render Tracking
|
|
301
|
+
|
|
302
|
+
```tsx
|
|
303
|
+
// Track renders with useRef
|
|
304
|
+
function useRenderCount(name) {
|
|
305
|
+
const count = useRef(0);
|
|
306
|
+
count.current++;
|
|
307
|
+
|
|
308
|
+
useEffect(() => {
|
|
309
|
+
console.log(`${name} rendered ${count.current} times`);
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
return count.current;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// Usage
|
|
316
|
+
function MyComponent() {
|
|
317
|
+
const renderCount = useRenderCount('MyComponent');
|
|
318
|
+
// ...
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Performance Checklist
|
|
325
|
+
|
|
326
|
+
```markdown
|
|
327
|
+
## Performance Audit Checklist
|
|
328
|
+
|
|
329
|
+
### Initial Load
|
|
330
|
+
- [ ] Bundle size reasonable (< 250KB initial JS)
|
|
331
|
+
- [ ] Code splitting implemented
|
|
332
|
+
- [ ] Images optimized and lazy loaded
|
|
333
|
+
- [ ] Critical CSS inlined
|
|
334
|
+
- [ ] Third-party scripts deferred
|
|
335
|
+
|
|
336
|
+
### Runtime
|
|
337
|
+
- [ ] No unnecessary re-renders
|
|
338
|
+
- [ ] Expensive calculations memoized
|
|
339
|
+
- [ ] Large lists virtualized
|
|
340
|
+
- [ ] Event handlers throttled/debounced
|
|
341
|
+
- [ ] Animations use CSS or requestAnimationFrame
|
|
342
|
+
|
|
343
|
+
### Memory
|
|
344
|
+
- [ ] Event listeners cleaned up
|
|
345
|
+
- [ ] Intervals/timeouts cleared
|
|
346
|
+
- [ ] Subscriptions unsubscribed
|
|
347
|
+
- [ ] Large objects released when not needed
|
|
348
|
+
|
|
349
|
+
### Network
|
|
350
|
+
- [ ] API calls parallelized where possible
|
|
351
|
+
- [ ] Data cached appropriately
|
|
352
|
+
- [ ] No duplicate requests
|
|
353
|
+
- [ ] Pagination for large datasets
|
|
354
|
+
|
|
355
|
+
### Build
|
|
356
|
+
- [ ] Tree shaking working
|
|
357
|
+
- [ ] Dead code eliminated
|
|
358
|
+
- [ ] Dependencies minimized
|
|
359
|
+
- [ ] Compression enabled (gzip/brotli)
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## Performance Debugging Commands
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
# Profile render performance
|
|
368
|
+
/perf profile --component UserList
|
|
369
|
+
|
|
370
|
+
# Find memory leaks
|
|
371
|
+
/perf memory --snapshot
|
|
372
|
+
|
|
373
|
+
# Analyze bundle
|
|
374
|
+
/perf bundle --analyze
|
|
375
|
+
|
|
376
|
+
# Check Core Web Vitals
|
|
377
|
+
/perf vitals
|
|
378
|
+
|
|
379
|
+
# Find slow API calls
|
|
380
|
+
/perf network --slow
|
|
381
|
+
```
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
# Systematic Debugging
|
|
2
|
+
|
|
3
|
+
A structured approach to finding and fixing bugs.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prompt Template
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Help me debug this issue:
|
|
11
|
+
|
|
12
|
+
**Symptom:**
|
|
13
|
+
{description of what's happening}
|
|
14
|
+
|
|
15
|
+
**Expected Behavior:**
|
|
16
|
+
{what should happen}
|
|
17
|
+
|
|
18
|
+
**Steps to Reproduce:**
|
|
19
|
+
1. {step 1}
|
|
20
|
+
2. {step 2}
|
|
21
|
+
3. {step 3}
|
|
22
|
+
|
|
23
|
+
**Environment:**
|
|
24
|
+
- Node version: {version}
|
|
25
|
+
- Browser: {browser if applicable}
|
|
26
|
+
- OS: {operating system}
|
|
27
|
+
|
|
28
|
+
**Relevant Code:**
|
|
29
|
+
{code snippet}
|
|
30
|
+
|
|
31
|
+
**Error Message (if any):**
|
|
32
|
+
{error message}
|
|
33
|
+
|
|
34
|
+
**What I've Tried:**
|
|
35
|
+
- {attempt 1}
|
|
36
|
+
- {attempt 2}
|
|
37
|
+
|
|
38
|
+
Please help me:
|
|
39
|
+
1. Analyze the issue
|
|
40
|
+
2. Identify potential root causes
|
|
41
|
+
3. Suggest debugging steps
|
|
42
|
+
4. Propose fixes
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Debugging Steps
|
|
48
|
+
|
|
49
|
+
### Step 1: Reproduce Consistently
|
|
50
|
+
|
|
51
|
+
**Questions to Answer:**
|
|
52
|
+
- Can you reproduce it every time?
|
|
53
|
+
- What's the minimal reproduction case?
|
|
54
|
+
- Does it happen in all environments?
|
|
55
|
+
|
|
56
|
+
**Template:**
|
|
57
|
+
```
|
|
58
|
+
Reproduction Steps:
|
|
59
|
+
1. Start the application with `npm run dev`
|
|
60
|
+
2. Navigate to /users
|
|
61
|
+
3. Click "Add User" button
|
|
62
|
+
4. Submit form with empty fields
|
|
63
|
+
5. Error appears: {error}
|
|
64
|
+
|
|
65
|
+
Frequency: Always / Sometimes / Rarely
|
|
66
|
+
Environment: Development / Staging / Production
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Step 2: Gather Information
|
|
70
|
+
|
|
71
|
+
**Data Collection:**
|
|
72
|
+
```typescript
|
|
73
|
+
// Add temporary logging
|
|
74
|
+
console.log('Function called with:', args);
|
|
75
|
+
console.log('State before:', state);
|
|
76
|
+
|
|
77
|
+
// Result of operation
|
|
78
|
+
const result = suspectFunction();
|
|
79
|
+
console.log('Result:', result);
|
|
80
|
+
|
|
81
|
+
// Check type
|
|
82
|
+
console.log('Type:', typeof result);
|
|
83
|
+
console.log('Is array:', Array.isArray(result));
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Network Issues:**
|
|
87
|
+
```typescript
|
|
88
|
+
// Log request/response
|
|
89
|
+
const response = await fetch(url);
|
|
90
|
+
console.log('Status:', response.status);
|
|
91
|
+
console.log('Headers:', Object.fromEntries(response.headers));
|
|
92
|
+
const data = await response.json();
|
|
93
|
+
console.log('Response data:', data);
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Step 3: Form Hypotheses
|
|
97
|
+
|
|
98
|
+
**Hypothesis Template:**
|
|
99
|
+
```markdown
|
|
100
|
+
## Hypothesis 1: Race Condition
|
|
101
|
+
**Reasoning:** The error occurs intermittently after user action
|
|
102
|
+
**Evidence:** Logs show state update after component unmount
|
|
103
|
+
**Test:** Add await before state update
|
|
104
|
+
**Expected Result:** Error should not occur
|
|
105
|
+
|
|
106
|
+
## Hypothesis 2: Null Reference
|
|
107
|
+
**Reasoning:** Error mentions "undefined is not an object"
|
|
108
|
+
**Evidence:** User data may not be loaded when accessed
|
|
109
|
+
**Test:** Add null check before accessing
|
|
110
|
+
**Expected Result:** Should handle missing data gracefully
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Step 4: Test Hypotheses
|
|
114
|
+
|
|
115
|
+
**Binary Search Debugging:**
|
|
116
|
+
```typescript
|
|
117
|
+
// Find which part fails
|
|
118
|
+
async function complexProcess() {
|
|
119
|
+
console.log('Step 1 - Starting');
|
|
120
|
+
const data = await fetchData();
|
|
121
|
+
console.log('Step 2 - Data fetched:', data);
|
|
122
|
+
|
|
123
|
+
const processed = processData(data);
|
|
124
|
+
console.log('Step 3 - Processed:', processed);
|
|
125
|
+
|
|
126
|
+
const result = formatResult(processed);
|
|
127
|
+
console.log('Step 4 - Formatted:', result);
|
|
128
|
+
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Isolation Testing:**
|
|
134
|
+
```typescript
|
|
135
|
+
// Test function in isolation
|
|
136
|
+
import { processData } from './utils';
|
|
137
|
+
|
|
138
|
+
// Test with known inputs
|
|
139
|
+
console.log(processData(null)); // Edge case
|
|
140
|
+
console.log(processData([])); // Empty
|
|
141
|
+
console.log(processData([1, 2, 3])); // Normal
|
|
142
|
+
console.log(processData(undefined)); // Missing
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Step 5: Implement Fix
|
|
146
|
+
|
|
147
|
+
**Fix Template:**
|
|
148
|
+
```typescript
|
|
149
|
+
// Before: Bug
|
|
150
|
+
function getUser(id) {
|
|
151
|
+
return users.find(u => u.id === id).name;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// After: Fix with null check
|
|
155
|
+
function getUser(id) {
|
|
156
|
+
const user = users.find(u => u.id === id);
|
|
157
|
+
if (!user) {
|
|
158
|
+
return null; // or throw new Error(`User ${id} not found`)
|
|
159
|
+
}
|
|
160
|
+
return user.name;
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Step 6: Prevent Regression
|
|
165
|
+
|
|
166
|
+
**Add Tests:**
|
|
167
|
+
```typescript
|
|
168
|
+
describe('getUser', () => {
|
|
169
|
+
it('should return user name when found', () => {
|
|
170
|
+
const result = getUser('123');
|
|
171
|
+
expect(result).toBe('John');
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
it('should return null when user not found', () => {
|
|
175
|
+
const result = getUser('nonexistent');
|
|
176
|
+
expect(result).toBeNull();
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
it('should handle undefined id', () => {
|
|
180
|
+
const result = getUser(undefined);
|
|
181
|
+
expect(result).toBeNull();
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Common Bug Patterns
|
|
189
|
+
|
|
190
|
+
### Async/Await Issues
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
// ❌ Bug: Missing await
|
|
194
|
+
async function loadData() {
|
|
195
|
+
const data = fetchData(); // Missing await!
|
|
196
|
+
console.log(data); // Logs Promise, not data
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// ✅ Fix
|
|
200
|
+
async function loadData() {
|
|
201
|
+
const data = await fetchData();
|
|
202
|
+
console.log(data);
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### State Race Conditions
|
|
207
|
+
|
|
208
|
+
```typescript
|
|
209
|
+
// ❌ Bug: State used after unmount
|
|
210
|
+
useEffect(() => {
|
|
211
|
+
fetchData().then(data => {
|
|
212
|
+
setData(data); // Component may be unmounted
|
|
213
|
+
});
|
|
214
|
+
}, []);
|
|
215
|
+
|
|
216
|
+
// ✅ Fix: Cleanup
|
|
217
|
+
useEffect(() => {
|
|
218
|
+
let cancelled = false;
|
|
219
|
+
fetchData().then(data => {
|
|
220
|
+
if (!cancelled) setData(data);
|
|
221
|
+
});
|
|
222
|
+
return () => { cancelled = true; };
|
|
223
|
+
}, []);
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Closure Issues
|
|
227
|
+
|
|
228
|
+
```typescript
|
|
229
|
+
// ❌ Bug: Stale closure
|
|
230
|
+
function Counter() {
|
|
231
|
+
const [count, setCount] = useState(0);
|
|
232
|
+
|
|
233
|
+
useEffect(() => {
|
|
234
|
+
setInterval(() => {
|
|
235
|
+
console.log(count); // Always logs initial value
|
|
236
|
+
}, 1000);
|
|
237
|
+
}, []);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// ✅ Fix: Use ref or include in deps
|
|
241
|
+
function Counter() {
|
|
242
|
+
const [count, setCount] = useState(0);
|
|
243
|
+
const countRef = useRef(count);
|
|
244
|
+
countRef.current = count;
|
|
245
|
+
|
|
246
|
+
useEffect(() => {
|
|
247
|
+
setInterval(() => {
|
|
248
|
+
console.log(countRef.current);
|
|
249
|
+
}, 1000);
|
|
250
|
+
}, []);
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Debugging Commands
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
# Analyze error message
|
|
260
|
+
/debug error "TypeError: Cannot read property 'name' of undefined"
|
|
261
|
+
|
|
262
|
+
# Trace execution
|
|
263
|
+
/debug trace "User registration fails after email validation"
|
|
264
|
+
|
|
265
|
+
# Get fix suggestions
|
|
266
|
+
/debug fix "Form resets on blur"
|
|
267
|
+
|
|
268
|
+
# Generate debugging test
|
|
269
|
+
/debug test "API returns 500 on large payload"
|
|
270
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Performance Optimization Prompts
|
|
2
|
+
|
|
3
|
+
AI-assisted performance analysis and optimization.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Available Prompts
|
|
8
|
+
|
|
9
|
+
| Prompt | Use Case |
|
|
10
|
+
|--------|----------|
|
|
11
|
+
| [analyze.md](./analyze.md) | Analyze performance issues |
|
|
12
|
+
| [frontend.md](./frontend.md) | Frontend optimization |
|
|
13
|
+
| [backend.md](./backend.md) | Backend optimization |
|
|
14
|
+
| [database.md](./database.md) | Database optimization |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Quick Commands
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
/perf analyze <code> # Analyze code performance
|
|
22
|
+
/perf profile <function> # Profile function execution
|
|
23
|
+
/perf optimize <target> # Suggest optimizations
|
|
24
|
+
/perf benchmark <code> # Create benchmarks
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Performance Areas
|
|
30
|
+
|
|
31
|
+
### Frontend
|
|
32
|
+
- Bundle size
|
|
33
|
+
- Render performance
|
|
34
|
+
- Memory usage
|
|
35
|
+
- Network requests
|
|
36
|
+
|
|
37
|
+
### Backend
|
|
38
|
+
- Response time
|
|
39
|
+
- Throughput
|
|
40
|
+
- Memory usage
|
|
41
|
+
- CPU utilization
|
|
42
|
+
|
|
43
|
+
### Database
|
|
44
|
+
- Query performance
|
|
45
|
+
- Index optimization
|
|
46
|
+
- Connection pooling
|
|
47
|
+
- Caching
|