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,603 @@
|
|
|
1
|
+
# React Web Frontend Workflow Example
|
|
2
|
+
|
|
3
|
+
A complete walkthrough of building a feature using ProAgents workflow.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Scenario
|
|
8
|
+
|
|
9
|
+
**Feature:** Add a user profile page with edit functionality
|
|
10
|
+
**Project:** Existing React + TypeScript + React Query application
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Phase 0: Initialization
|
|
15
|
+
|
|
16
|
+
### Start Feature
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
User: /feature-start "User Profile Page"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Context Gathered
|
|
23
|
+
|
|
24
|
+
```markdown
|
|
25
|
+
Project: react-app
|
|
26
|
+
Type: Web Frontend (React)
|
|
27
|
+
Branch: feature/user-profile
|
|
28
|
+
|
|
29
|
+
Feature: User Profile Page
|
|
30
|
+
- Display user information
|
|
31
|
+
- Edit profile form
|
|
32
|
+
- Avatar upload
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Phase 1: Codebase Analysis
|
|
38
|
+
|
|
39
|
+
### Analysis Results
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
## Codebase Analysis Summary
|
|
43
|
+
|
|
44
|
+
### Tech Stack
|
|
45
|
+
- React 18.2
|
|
46
|
+
- TypeScript 5.0
|
|
47
|
+
- React Query 4.x
|
|
48
|
+
- React Router 6.x
|
|
49
|
+
- Tailwind CSS
|
|
50
|
+
|
|
51
|
+
### Directory Structure
|
|
52
|
+
src/
|
|
53
|
+
├── components/common/ # Button, Input, Card, Modal
|
|
54
|
+
├── features/
|
|
55
|
+
│ └── auth/ # Existing auth feature
|
|
56
|
+
├── hooks/ # useAuth, useApi
|
|
57
|
+
├── services/ # apiClient configured
|
|
58
|
+
└── types/ # User type exists
|
|
59
|
+
|
|
60
|
+
### Existing Patterns
|
|
61
|
+
- Feature-based organization
|
|
62
|
+
- React Query for server state
|
|
63
|
+
- React Hook Form for forms
|
|
64
|
+
- Tailwind for styling
|
|
65
|
+
|
|
66
|
+
### Related Code
|
|
67
|
+
- User type: src/types/User.ts
|
|
68
|
+
- Auth hook: src/hooks/useAuth.ts
|
|
69
|
+
- API client: src/services/apiClient.ts
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Phase 2: Requirements
|
|
75
|
+
|
|
76
|
+
### Feature Requirements
|
|
77
|
+
|
|
78
|
+
```markdown
|
|
79
|
+
## User Profile Page Requirements
|
|
80
|
+
|
|
81
|
+
### User Stories
|
|
82
|
+
1. As a user, I want to view my profile information
|
|
83
|
+
2. As a user, I want to edit my profile details
|
|
84
|
+
3. As a user, I want to upload a new avatar
|
|
85
|
+
|
|
86
|
+
### Functional Requirements
|
|
87
|
+
- Display user: name, email, bio, avatar
|
|
88
|
+
- Edit form with validation
|
|
89
|
+
- Avatar upload (max 5MB, jpg/png)
|
|
90
|
+
- Success/error notifications
|
|
91
|
+
|
|
92
|
+
### Technical Requirements
|
|
93
|
+
- Use existing React Query patterns
|
|
94
|
+
- Follow feature-based structure
|
|
95
|
+
- Add to existing user types
|
|
96
|
+
|
|
97
|
+
### API Endpoints
|
|
98
|
+
- GET /api/users/me - Get current user
|
|
99
|
+
- PUT /api/users/me - Update user
|
|
100
|
+
- POST /api/users/me/avatar - Upload avatar
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Phase 3: UI Design
|
|
106
|
+
|
|
107
|
+
### Design Specification
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
## Profile Page Design
|
|
111
|
+
|
|
112
|
+
### Layout
|
|
113
|
+
┌────────────────────────────────┐
|
|
114
|
+
│ Header │
|
|
115
|
+
├────────────────────────────────┤
|
|
116
|
+
│ ┌──────┐ │
|
|
117
|
+
│ │Avatar│ John Doe │
|
|
118
|
+
│ └──────┘ john@example.com │
|
|
119
|
+
│ [Edit Profile] │
|
|
120
|
+
├────────────────────────────────┤
|
|
121
|
+
│ Bio │
|
|
122
|
+
│ ───────────────────────── │
|
|
123
|
+
│ Lorem ipsum dolor sit amet... │
|
|
124
|
+
├────────────────────────────────┤
|
|
125
|
+
│ Account Details │
|
|
126
|
+
│ ───────────────────────── │
|
|
127
|
+
│ Member since: Jan 2024 │
|
|
128
|
+
│ Last login: 2 hours ago │
|
|
129
|
+
└────────────────────────────────┘
|
|
130
|
+
|
|
131
|
+
### Edit Modal
|
|
132
|
+
┌────────────────────────────────┐
|
|
133
|
+
│ Edit Profile [X]│
|
|
134
|
+
├────────────────────────────────┤
|
|
135
|
+
│ Name: [________________] │
|
|
136
|
+
│ Bio: [________________] │
|
|
137
|
+
│ [________________] │
|
|
138
|
+
│ Avatar: [Choose File] │
|
|
139
|
+
│ │
|
|
140
|
+
│ [Cancel] [Save] │
|
|
141
|
+
└────────────────────────────────┘
|
|
142
|
+
|
|
143
|
+
### Tokens Used
|
|
144
|
+
- Colors: bg-white, text-gray-900, text-gray-600
|
|
145
|
+
- Spacing: p-6, gap-4
|
|
146
|
+
- Border: rounded-lg, border-gray-200
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Phase 4: Implementation Plan
|
|
152
|
+
|
|
153
|
+
### File Plan
|
|
154
|
+
|
|
155
|
+
```markdown
|
|
156
|
+
## Files to Create
|
|
157
|
+
|
|
158
|
+
src/features/profile/
|
|
159
|
+
├── index.ts # Public exports
|
|
160
|
+
├── ProfilePage.tsx # Main page component
|
|
161
|
+
├── components/
|
|
162
|
+
│ ├── ProfileHeader.tsx # Avatar + name section
|
|
163
|
+
│ ├── ProfileDetails.tsx # Bio + details
|
|
164
|
+
│ ├── EditProfileModal.tsx # Edit form modal
|
|
165
|
+
│ └── AvatarUpload.tsx # Avatar upload component
|
|
166
|
+
├── hooks/
|
|
167
|
+
│ ├── useProfile.ts # Get profile data
|
|
168
|
+
│ └── useUpdateProfile.ts # Update profile mutation
|
|
169
|
+
├── services/
|
|
170
|
+
│ └── profileApi.ts # API functions
|
|
171
|
+
└── types.ts # Profile-specific types
|
|
172
|
+
|
|
173
|
+
## Files to Modify
|
|
174
|
+
- src/App.tsx # Add route
|
|
175
|
+
- src/components/common/index.ts # Export if new components
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Implementation Order
|
|
179
|
+
|
|
180
|
+
```markdown
|
|
181
|
+
1. Create types.ts
|
|
182
|
+
2. Create profileApi.ts
|
|
183
|
+
3. Create useProfile.ts and useUpdateProfile.ts
|
|
184
|
+
4. Create ProfileHeader.tsx
|
|
185
|
+
5. Create ProfileDetails.tsx
|
|
186
|
+
6. Create AvatarUpload.tsx
|
|
187
|
+
7. Create EditProfileModal.tsx
|
|
188
|
+
8. Create ProfilePage.tsx
|
|
189
|
+
9. Add route to App.tsx
|
|
190
|
+
10. Write tests
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Phase 5: Implementation
|
|
196
|
+
|
|
197
|
+
### Step 1: Types
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
// src/features/profile/types.ts
|
|
201
|
+
export interface ProfileData {
|
|
202
|
+
id: string;
|
|
203
|
+
name: string;
|
|
204
|
+
email: string;
|
|
205
|
+
bio: string;
|
|
206
|
+
avatarUrl: string;
|
|
207
|
+
createdAt: string;
|
|
208
|
+
lastLoginAt: string;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export interface UpdateProfileDto {
|
|
212
|
+
name?: string;
|
|
213
|
+
bio?: string;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export interface UploadAvatarResponse {
|
|
217
|
+
avatarUrl: string;
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Step 2: API Service
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
// src/features/profile/services/profileApi.ts
|
|
225
|
+
import { apiClient } from '@/services/apiClient';
|
|
226
|
+
import type { ProfileData, UpdateProfileDto, UploadAvatarResponse } from '../types';
|
|
227
|
+
|
|
228
|
+
export const profileApi = {
|
|
229
|
+
getProfile: () =>
|
|
230
|
+
apiClient.get<ProfileData>('/users/me'),
|
|
231
|
+
|
|
232
|
+
updateProfile: (data: UpdateProfileDto) =>
|
|
233
|
+
apiClient.put<ProfileData>('/users/me', data),
|
|
234
|
+
|
|
235
|
+
uploadAvatar: (file: File) => {
|
|
236
|
+
const formData = new FormData();
|
|
237
|
+
formData.append('avatar', file);
|
|
238
|
+
return apiClient.post<UploadAvatarResponse>('/users/me/avatar', formData, {
|
|
239
|
+
headers: { 'Content-Type': 'multipart/form-data' },
|
|
240
|
+
});
|
|
241
|
+
},
|
|
242
|
+
};
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Step 3: Hooks
|
|
246
|
+
|
|
247
|
+
```typescript
|
|
248
|
+
// src/features/profile/hooks/useProfile.ts
|
|
249
|
+
import { useQuery } from '@tanstack/react-query';
|
|
250
|
+
import { profileApi } from '../services/profileApi';
|
|
251
|
+
|
|
252
|
+
export function useProfile() {
|
|
253
|
+
return useQuery({
|
|
254
|
+
queryKey: ['profile'],
|
|
255
|
+
queryFn: profileApi.getProfile,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// src/features/profile/hooks/useUpdateProfile.ts
|
|
260
|
+
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
261
|
+
import { profileApi } from '../services/profileApi';
|
|
262
|
+
import type { UpdateProfileDto } from '../types';
|
|
263
|
+
|
|
264
|
+
export function useUpdateProfile() {
|
|
265
|
+
const queryClient = useQueryClient();
|
|
266
|
+
|
|
267
|
+
return useMutation({
|
|
268
|
+
mutationFn: (data: UpdateProfileDto) => profileApi.updateProfile(data),
|
|
269
|
+
onSuccess: () => {
|
|
270
|
+
queryClient.invalidateQueries({ queryKey: ['profile'] });
|
|
271
|
+
},
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### Step 4-7: Components
|
|
277
|
+
|
|
278
|
+
```typescript
|
|
279
|
+
// src/features/profile/components/ProfileHeader.tsx
|
|
280
|
+
import type { FC } from 'react';
|
|
281
|
+
import type { ProfileData } from '../types';
|
|
282
|
+
|
|
283
|
+
interface ProfileHeaderProps {
|
|
284
|
+
profile: ProfileData;
|
|
285
|
+
onEditClick: () => void;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
export const ProfileHeader: FC<ProfileHeaderProps> = ({
|
|
289
|
+
profile,
|
|
290
|
+
onEditClick,
|
|
291
|
+
}) => {
|
|
292
|
+
return (
|
|
293
|
+
<div className="flex items-center gap-4 p-6 bg-white rounded-lg shadow">
|
|
294
|
+
<img
|
|
295
|
+
src={profile.avatarUrl}
|
|
296
|
+
alt={profile.name}
|
|
297
|
+
className="w-24 h-24 rounded-full object-cover"
|
|
298
|
+
/>
|
|
299
|
+
<div className="flex-1">
|
|
300
|
+
<h1 className="text-2xl font-bold text-gray-900">{profile.name}</h1>
|
|
301
|
+
<p className="text-gray-600">{profile.email}</p>
|
|
302
|
+
<button
|
|
303
|
+
onClick={onEditClick}
|
|
304
|
+
className="mt-2 px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700"
|
|
305
|
+
>
|
|
306
|
+
Edit Profile
|
|
307
|
+
</button>
|
|
308
|
+
</div>
|
|
309
|
+
</div>
|
|
310
|
+
);
|
|
311
|
+
};
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
```typescript
|
|
315
|
+
// src/features/profile/components/EditProfileModal.tsx
|
|
316
|
+
import { useState } from 'react';
|
|
317
|
+
import type { FC } from 'react';
|
|
318
|
+
import { useForm } from 'react-hook-form';
|
|
319
|
+
import { Modal } from '@/components/common';
|
|
320
|
+
import { useUpdateProfile } from '../hooks/useUpdateProfile';
|
|
321
|
+
import type { ProfileData, UpdateProfileDto } from '../types';
|
|
322
|
+
|
|
323
|
+
interface EditProfileModalProps {
|
|
324
|
+
profile: ProfileData;
|
|
325
|
+
isOpen: boolean;
|
|
326
|
+
onClose: () => void;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
export const EditProfileModal: FC<EditProfileModalProps> = ({
|
|
330
|
+
profile,
|
|
331
|
+
isOpen,
|
|
332
|
+
onClose,
|
|
333
|
+
}) => {
|
|
334
|
+
const { register, handleSubmit, formState: { errors } } = useForm<UpdateProfileDto>({
|
|
335
|
+
defaultValues: {
|
|
336
|
+
name: profile.name,
|
|
337
|
+
bio: profile.bio,
|
|
338
|
+
},
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
const updateProfile = useUpdateProfile();
|
|
342
|
+
|
|
343
|
+
const onSubmit = async (data: UpdateProfileDto) => {
|
|
344
|
+
await updateProfile.mutateAsync(data);
|
|
345
|
+
onClose();
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
return (
|
|
349
|
+
<Modal isOpen={isOpen} onClose={onClose} title="Edit Profile">
|
|
350
|
+
<form onSubmit={handleSubmit(onSubmit)} className="space-y-4">
|
|
351
|
+
<div>
|
|
352
|
+
<label className="block text-sm font-medium text-gray-700">
|
|
353
|
+
Name
|
|
354
|
+
</label>
|
|
355
|
+
<input
|
|
356
|
+
{...register('name', { required: 'Name is required' })}
|
|
357
|
+
className="mt-1 block w-full rounded-md border-gray-300 shadow-sm"
|
|
358
|
+
/>
|
|
359
|
+
{errors.name && (
|
|
360
|
+
<p className="mt-1 text-sm text-red-600">{errors.name.message}</p>
|
|
361
|
+
)}
|
|
362
|
+
</div>
|
|
363
|
+
|
|
364
|
+
<div>
|
|
365
|
+
<label className="block text-sm font-medium text-gray-700">
|
|
366
|
+
Bio
|
|
367
|
+
</label>
|
|
368
|
+
<textarea
|
|
369
|
+
{...register('bio')}
|
|
370
|
+
rows={4}
|
|
371
|
+
className="mt-1 block w-full rounded-md border-gray-300 shadow-sm"
|
|
372
|
+
/>
|
|
373
|
+
</div>
|
|
374
|
+
|
|
375
|
+
<div className="flex justify-end gap-2">
|
|
376
|
+
<button
|
|
377
|
+
type="button"
|
|
378
|
+
onClick={onClose}
|
|
379
|
+
className="px-4 py-2 border rounded-md"
|
|
380
|
+
>
|
|
381
|
+
Cancel
|
|
382
|
+
</button>
|
|
383
|
+
<button
|
|
384
|
+
type="submit"
|
|
385
|
+
disabled={updateProfile.isPending}
|
|
386
|
+
className="px-4 py-2 bg-blue-600 text-white rounded-md"
|
|
387
|
+
>
|
|
388
|
+
{updateProfile.isPending ? 'Saving...' : 'Save'}
|
|
389
|
+
</button>
|
|
390
|
+
</div>
|
|
391
|
+
</form>
|
|
392
|
+
</Modal>
|
|
393
|
+
);
|
|
394
|
+
};
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### Step 8: Main Page
|
|
398
|
+
|
|
399
|
+
```typescript
|
|
400
|
+
// src/features/profile/ProfilePage.tsx
|
|
401
|
+
import { useState } from 'react';
|
|
402
|
+
import { useProfile } from './hooks/useProfile';
|
|
403
|
+
import { ProfileHeader } from './components/ProfileHeader';
|
|
404
|
+
import { ProfileDetails } from './components/ProfileDetails';
|
|
405
|
+
import { EditProfileModal } from './components/EditProfileModal';
|
|
406
|
+
import { Spinner } from '@/components/common';
|
|
407
|
+
|
|
408
|
+
export function ProfilePage() {
|
|
409
|
+
const [isEditOpen, setIsEditOpen] = useState(false);
|
|
410
|
+
const { data: profile, isLoading, error } = useProfile();
|
|
411
|
+
|
|
412
|
+
if (isLoading) return <Spinner />;
|
|
413
|
+
if (error) return <div>Error loading profile</div>;
|
|
414
|
+
if (!profile) return null;
|
|
415
|
+
|
|
416
|
+
return (
|
|
417
|
+
<div className="max-w-2xl mx-auto py-8 px-4">
|
|
418
|
+
<ProfileHeader
|
|
419
|
+
profile={profile}
|
|
420
|
+
onEditClick={() => setIsEditOpen(true)}
|
|
421
|
+
/>
|
|
422
|
+
|
|
423
|
+
<ProfileDetails profile={profile} />
|
|
424
|
+
|
|
425
|
+
<EditProfileModal
|
|
426
|
+
profile={profile}
|
|
427
|
+
isOpen={isEditOpen}
|
|
428
|
+
onClose={() => setIsEditOpen(false)}
|
|
429
|
+
/>
|
|
430
|
+
</div>
|
|
431
|
+
);
|
|
432
|
+
}
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
### Step 9: Add Route
|
|
436
|
+
|
|
437
|
+
```typescript
|
|
438
|
+
// In src/App.tsx - Add route
|
|
439
|
+
import { ProfilePage } from '@/features/profile';
|
|
440
|
+
|
|
441
|
+
<Route path="/profile" element={<ProfilePage />} />
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## Phase 6: Testing
|
|
447
|
+
|
|
448
|
+
### Unit Tests
|
|
449
|
+
|
|
450
|
+
```typescript
|
|
451
|
+
// src/features/profile/components/ProfileHeader.test.tsx
|
|
452
|
+
import { render, screen } from '@testing-library/react';
|
|
453
|
+
import userEvent from '@testing-library/user-event';
|
|
454
|
+
import { ProfileHeader } from './ProfileHeader';
|
|
455
|
+
|
|
456
|
+
const mockProfile = {
|
|
457
|
+
id: '1',
|
|
458
|
+
name: 'John Doe',
|
|
459
|
+
email: 'john@example.com',
|
|
460
|
+
bio: 'Developer',
|
|
461
|
+
avatarUrl: '/avatar.jpg',
|
|
462
|
+
createdAt: '2024-01-01',
|
|
463
|
+
lastLoginAt: '2024-01-15',
|
|
464
|
+
};
|
|
465
|
+
|
|
466
|
+
describe('ProfileHeader', () => {
|
|
467
|
+
it('renders user information', () => {
|
|
468
|
+
render(<ProfileHeader profile={mockProfile} onEditClick={vi.fn()} />);
|
|
469
|
+
|
|
470
|
+
expect(screen.getByText('John Doe')).toBeInTheDocument();
|
|
471
|
+
expect(screen.getByText('john@example.com')).toBeInTheDocument();
|
|
472
|
+
});
|
|
473
|
+
|
|
474
|
+
it('calls onEditClick when edit button clicked', async () => {
|
|
475
|
+
const onEditClick = vi.fn();
|
|
476
|
+
render(<ProfileHeader profile={mockProfile} onEditClick={onEditClick} />);
|
|
477
|
+
|
|
478
|
+
await userEvent.click(screen.getByRole('button', { name: /edit/i }));
|
|
479
|
+
|
|
480
|
+
expect(onEditClick).toHaveBeenCalled();
|
|
481
|
+
});
|
|
482
|
+
});
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
### Integration Tests
|
|
486
|
+
|
|
487
|
+
```typescript
|
|
488
|
+
// src/features/profile/__tests__/ProfilePage.test.tsx
|
|
489
|
+
import { render, screen, waitFor } from '@testing-library/react';
|
|
490
|
+
import userEvent from '@testing-library/user-event';
|
|
491
|
+
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
492
|
+
import { ProfilePage } from '../ProfilePage';
|
|
493
|
+
|
|
494
|
+
// Mock API
|
|
495
|
+
vi.mock('../services/profileApi');
|
|
496
|
+
|
|
497
|
+
describe('ProfilePage', () => {
|
|
498
|
+
const queryClient = new QueryClient();
|
|
499
|
+
|
|
500
|
+
it('displays profile and allows editing', async () => {
|
|
501
|
+
render(
|
|
502
|
+
<QueryClientProvider client={queryClient}>
|
|
503
|
+
<ProfilePage />
|
|
504
|
+
</QueryClientProvider>
|
|
505
|
+
);
|
|
506
|
+
|
|
507
|
+
// Wait for profile to load
|
|
508
|
+
await waitFor(() => {
|
|
509
|
+
expect(screen.getByText('John Doe')).toBeInTheDocument();
|
|
510
|
+
});
|
|
511
|
+
|
|
512
|
+
// Open edit modal
|
|
513
|
+
await userEvent.click(screen.getByRole('button', { name: /edit/i }));
|
|
514
|
+
|
|
515
|
+
// Verify modal opened
|
|
516
|
+
expect(screen.getByRole('dialog')).toBeInTheDocument();
|
|
517
|
+
});
|
|
518
|
+
});
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
---
|
|
522
|
+
|
|
523
|
+
## Phase 6.5: Code Review
|
|
524
|
+
|
|
525
|
+
### Self-Review Checklist
|
|
526
|
+
|
|
527
|
+
```markdown
|
|
528
|
+
✅ Code follows project conventions
|
|
529
|
+
✅ TypeScript types properly defined
|
|
530
|
+
✅ React Query patterns followed
|
|
531
|
+
✅ Error handling implemented
|
|
532
|
+
✅ Loading states handled
|
|
533
|
+
✅ Accessible (labels, roles)
|
|
534
|
+
✅ Tests written
|
|
535
|
+
✅ No console.logs
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
---
|
|
539
|
+
|
|
540
|
+
## Phase 7: Documentation
|
|
541
|
+
|
|
542
|
+
### Component Documentation
|
|
543
|
+
|
|
544
|
+
```typescript
|
|
545
|
+
/**
|
|
546
|
+
* ProfilePage - User profile view and edit functionality
|
|
547
|
+
*
|
|
548
|
+
* @description Main page component for viewing and editing user profile.
|
|
549
|
+
* Uses React Query for data fetching and caching.
|
|
550
|
+
*
|
|
551
|
+
* @example
|
|
552
|
+
* // Add to router
|
|
553
|
+
* <Route path="/profile" element={<ProfilePage />} />
|
|
554
|
+
*/
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
---
|
|
558
|
+
|
|
559
|
+
## Phase 8: Deployment
|
|
560
|
+
|
|
561
|
+
### Pre-Deployment Checklist
|
|
562
|
+
|
|
563
|
+
```markdown
|
|
564
|
+
✅ All tests passing
|
|
565
|
+
✅ Build succeeds
|
|
566
|
+
✅ No linting errors
|
|
567
|
+
✅ Staging tested
|
|
568
|
+
✅ Code reviewed
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
### Git Commands
|
|
572
|
+
|
|
573
|
+
```bash
|
|
574
|
+
git add .
|
|
575
|
+
git commit -m "feat(profile): add user profile page
|
|
576
|
+
|
|
577
|
+
- Add profile view with header and details
|
|
578
|
+
- Add edit profile modal
|
|
579
|
+
- Add avatar upload functionality
|
|
580
|
+
- Add React Query hooks for data fetching
|
|
581
|
+
- Add unit and integration tests
|
|
582
|
+
|
|
583
|
+
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>"
|
|
584
|
+
|
|
585
|
+
git push origin feature/user-profile
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
---
|
|
589
|
+
|
|
590
|
+
## Summary
|
|
591
|
+
|
|
592
|
+
This example demonstrated the complete ProAgents workflow for a React frontend feature:
|
|
593
|
+
|
|
594
|
+
1. **Initialization** - Created feature branch and gathered context
|
|
595
|
+
2. **Analysis** - Understood existing patterns and conventions
|
|
596
|
+
3. **Requirements** - Defined user stories and technical requirements
|
|
597
|
+
4. **UI Design** - Created wireframes and design specifications
|
|
598
|
+
5. **Planning** - Mapped files and implementation order
|
|
599
|
+
6. **Implementation** - Built feature following existing patterns
|
|
600
|
+
7. **Testing** - Wrote unit and integration tests
|
|
601
|
+
8. **Review** - Self-reviewed against checklist
|
|
602
|
+
9. **Documentation** - Added code documentation
|
|
603
|
+
10. **Deployment** - Prepared for merge and deploy
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Existing Project Integration
|
|
2
|
+
|
|
3
|
+
Guide for integrating ProAgents into existing codebases.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
Existing projects face unique challenges when adopting ProAgents:
|
|
10
|
+
|
|
11
|
+
1. **Inconsistent Patterns** - Mixed conventions across the codebase
|
|
12
|
+
2. **Technical Debt** - Legacy code, missing tests, outdated dependencies
|
|
13
|
+
3. **Partial Documentation** - Missing or outdated docs
|
|
14
|
+
4. **Team Resistance** - Existing workflows and processes
|
|
15
|
+
5. **Gradual Migration** - Can't change everything at once
|
|
16
|
+
6. **Tool Conflicts** - Existing automation and CI/CD
|
|
17
|
+
|
|
18
|
+
This guide addresses each challenge with practical solutions.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Quick Start for Existing Projects
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Initialize with existing project mode
|
|
26
|
+
/init --existing
|
|
27
|
+
|
|
28
|
+
# Run compatibility assessment first
|
|
29
|
+
/assess-compatibility
|
|
30
|
+
|
|
31
|
+
# Generate adoption plan
|
|
32
|
+
/adoption-plan
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Files in This Section
|
|
38
|
+
|
|
39
|
+
| File | Description |
|
|
40
|
+
|------|-------------|
|
|
41
|
+
| `README.md` | This overview |
|
|
42
|
+
| `challenges.md` | Detailed challenge analysis |
|
|
43
|
+
| `compatibility-assessment.md` | Assess project compatibility |
|
|
44
|
+
| `gradual-adoption.md` | Step-by-step adoption strategy |
|
|
45
|
+
| `pattern-reconciliation.md` | Reconcile existing vs recommended patterns |
|
|
46
|
+
| `technical-debt-handling.md` | Handle existing technical debt |
|
|
47
|
+
| `team-onboarding.md` | Onboard team to ProAgents |
|
|
48
|
+
| `migration-strategies.md` | Migration approaches |
|
|
49
|
+
| `coexistence-mode.md` | Run alongside existing workflows |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Adoption Phases
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Phase 1: Assessment (Non-invasive)
|
|
57
|
+
↓
|
|
58
|
+
Phase 2: Configuration (Adapt to project)
|
|
59
|
+
↓
|
|
60
|
+
Phase 3: Pilot (Single feature)
|
|
61
|
+
↓
|
|
62
|
+
Phase 4: Gradual Rollout (More features)
|
|
63
|
+
↓
|
|
64
|
+
Phase 5: Full Integration (Team-wide)
|
|
65
|
+
```
|