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,708 @@
|
|
|
1
|
+
# ProAgents: A Day in the Life
|
|
2
|
+
|
|
3
|
+
An end-to-end narrative showing how ProAgents transforms your development workflow.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prologue: Before ProAgents
|
|
8
|
+
|
|
9
|
+
*It's Monday morning. Sarah opens her laptop to start working on a new feature for the company's e-commerce platform. Her task: add a wishlist feature.*
|
|
10
|
+
|
|
11
|
+
**The Old Way:**
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Sarah: *Opens Slack, finds the feature request*
|
|
15
|
+
Sarah: *Searches codebase for similar features*
|
|
16
|
+
Sarah: *Finds 3 different patterns used in existing features*
|
|
17
|
+
Sarah: *Picks one, starts coding*
|
|
18
|
+
Sarah: *Realizes she missed an API endpoint 2 hours in*
|
|
19
|
+
Sarah: *Asks teammate about the auth pattern, waits for response*
|
|
20
|
+
Sarah: *Finally submits PR at 6pm*
|
|
21
|
+
Sarah: *Gets review comments about inconsistent patterns*
|
|
22
|
+
Sarah: *Spends next day fixing review comments*
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Time spent: 2 days**
|
|
26
|
+
**Frustration level: High**
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Act 1: Morning - Starting the Feature
|
|
31
|
+
|
|
32
|
+
*Sarah has adopted ProAgents. Same Monday morning, same wishlist feature.*
|
|
33
|
+
|
|
34
|
+
### 9:00 AM - Starting Fresh
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Sarah: I need to add a wishlist feature. Users should be able to
|
|
38
|
+
save products and view their wishlist.
|
|
39
|
+
|
|
40
|
+
ProAgents: I'll help you build a wishlist feature. Let me start by
|
|
41
|
+
analyzing your codebase.
|
|
42
|
+
|
|
43
|
+
[Analyzing...]
|
|
44
|
+
|
|
45
|
+
════════════════════════════════════════════════════════
|
|
46
|
+
Codebase Analysis Complete
|
|
47
|
+
════════════════════════════════════════════════════════
|
|
48
|
+
|
|
49
|
+
Project: ShopFlow (E-commerce Platform)
|
|
50
|
+
Tech: React 18 + Next.js 14 + Prisma + PostgreSQL
|
|
51
|
+
|
|
52
|
+
Existing Similar Features:
|
|
53
|
+
• Cart system (src/features/cart/)
|
|
54
|
+
• Favorites (src/features/favorites/) - Legacy, deprecated
|
|
55
|
+
• Saved items (src/features/saved/) - Mobile only
|
|
56
|
+
|
|
57
|
+
Recommendation: Follow cart/ pattern (most recent, best practices)
|
|
58
|
+
|
|
59
|
+
Patterns Detected:
|
|
60
|
+
• Feature folders with index.ts exports
|
|
61
|
+
• React Query for server state
|
|
62
|
+
• Zod for validation
|
|
63
|
+
• tRPC for API (not REST)
|
|
64
|
+
|
|
65
|
+
Related Models:
|
|
66
|
+
• Product (existing)
|
|
67
|
+
• User (existing)
|
|
68
|
+
• CartItem (similar pattern to follow)
|
|
69
|
+
|
|
70
|
+
Would you like me to proceed with requirements gathering?
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Sarah notices ProAgents found the deprecated favorites feature - she would have spent an hour looking at that old code and following outdated patterns.
|
|
74
|
+
|
|
75
|
+
### 9:15 AM - Requirements Clarification
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
ProAgents: I have a few questions to clarify the requirements:
|
|
79
|
+
|
|
80
|
+
1. Wishlist scope - what should users be able to do?
|
|
81
|
+
[√] Add products to wishlist
|
|
82
|
+
[√] Remove products from wishlist
|
|
83
|
+
[√] View wishlist
|
|
84
|
+
[ ] Share wishlist (public link)
|
|
85
|
+
[ ] Multiple wishlists (e.g., "Birthday", "Home")
|
|
86
|
+
|
|
87
|
+
2. Persistence - when does wishlist save?
|
|
88
|
+
[√] Immediately (optimistic update)
|
|
89
|
+
[ ] On explicit save
|
|
90
|
+
[ ] Sync with account (logged in only)
|
|
91
|
+
|
|
92
|
+
3. Guest users - should they have wishlists?
|
|
93
|
+
[ ] No, login required
|
|
94
|
+
[√] Yes, localStorage (migrate on login)
|
|
95
|
+
[ ] Yes, anonymous account
|
|
96
|
+
|
|
97
|
+
Please confirm or adjust these selections.
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Sarah: Add "Share wishlist" too. And yes, guest users should get
|
|
102
|
+
localStorage wishlists that migrate when they log in.
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
ProAgents: Got it. Updated requirements:
|
|
107
|
+
|
|
108
|
+
════════════════════════════════════════════════════════
|
|
109
|
+
Wishlist Feature Requirements
|
|
110
|
+
════════════════════════════════════════════════════════
|
|
111
|
+
|
|
112
|
+
User Stories:
|
|
113
|
+
1. As a user, I can add a product to my wishlist
|
|
114
|
+
2. As a user, I can remove a product from my wishlist
|
|
115
|
+
3. As a user, I can view all my wishlisted products
|
|
116
|
+
4. As a user, I can share my wishlist via a public link
|
|
117
|
+
5. As a guest, my wishlist persists in localStorage
|
|
118
|
+
6. As a guest who logs in, my wishlist migrates to my account
|
|
119
|
+
|
|
120
|
+
Technical Requirements:
|
|
121
|
+
• Follow cart/ feature structure
|
|
122
|
+
• Use tRPC for API endpoints
|
|
123
|
+
• Use React Query for client state
|
|
124
|
+
• Guest wishlist in localStorage with migration
|
|
125
|
+
|
|
126
|
+
API Endpoints (tRPC):
|
|
127
|
+
• wishlist.list - Get user's wishlist
|
|
128
|
+
• wishlist.add - Add product to wishlist
|
|
129
|
+
• wishlist.remove - Remove from wishlist
|
|
130
|
+
• wishlist.share - Generate shareable link
|
|
131
|
+
• wishlist.migrate - Migrate guest wishlist to account
|
|
132
|
+
|
|
133
|
+
Database Changes:
|
|
134
|
+
• New Wishlist model
|
|
135
|
+
• New WishlistItem model
|
|
136
|
+
• New WishlistShare model
|
|
137
|
+
|
|
138
|
+
Checkpoint: Do these requirements look complete?
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Sarah reviews and confirms. This took 15 minutes instead of the hour she used to spend writing requirements docs.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Act 2: Mid-Morning - Design & Planning
|
|
146
|
+
|
|
147
|
+
### 9:30 AM - UI Design
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
ProAgents: Based on your existing UI patterns, here's the proposed design:
|
|
151
|
+
|
|
152
|
+
════════════════════════════════════════════════════════
|
|
153
|
+
Wishlist UI Design
|
|
154
|
+
════════════════════════════════════════════════════════
|
|
155
|
+
|
|
156
|
+
1. Add to Wishlist Button (on product cards)
|
|
157
|
+
┌────────────────────────────┐
|
|
158
|
+
│ Product Card │
|
|
159
|
+
│ ┌──────┐ │
|
|
160
|
+
│ │ │ Product Name │
|
|
161
|
+
│ │ IMG │ $29.99 │
|
|
162
|
+
│ │ │ [♡ Add to list] │ ← Outline heart
|
|
163
|
+
│ └──────┘ │
|
|
164
|
+
│ [Add to Cart] │
|
|
165
|
+
└────────────────────────────┘
|
|
166
|
+
|
|
167
|
+
When added:
|
|
168
|
+
│ [♥ In Wishlist] │ ← Filled heart, different color
|
|
169
|
+
|
|
170
|
+
2. Wishlist Page (/wishlist)
|
|
171
|
+
┌────────────────────────────────────────────────────┐
|
|
172
|
+
│ My Wishlist (12 items) [Share Wishlist] │
|
|
173
|
+
├────────────────────────────────────────────────────┤
|
|
174
|
+
│ ┌─────────────────────────────────────────────────┐│
|
|
175
|
+
│ │ [IMG] Product 1 $29.99 [♥] [🛒] ││
|
|
176
|
+
│ │ In stock ││
|
|
177
|
+
│ └─────────────────────────────────────────────────┘│
|
|
178
|
+
│ ┌─────────────────────────────────────────────────┐│
|
|
179
|
+
│ │ [IMG] Product 2 $49.99 [♥] [🛒] ││
|
|
180
|
+
│ │ Only 2 left ││
|
|
181
|
+
│ └─────────────────────────────────────────────────┘│
|
|
182
|
+
│ │
|
|
183
|
+
│ Total value: $79.98 │
|
|
184
|
+
│ [Add All to Cart] │
|
|
185
|
+
└────────────────────────────────────────────────────┘
|
|
186
|
+
|
|
187
|
+
3. Shared Wishlist Page (/wishlist/share/[id])
|
|
188
|
+
Same as above but:
|
|
189
|
+
• Different header: "Sarah's Wishlist"
|
|
190
|
+
• No remove buttons
|
|
191
|
+
• "Buy as Gift" option
|
|
192
|
+
|
|
193
|
+
Using existing components:
|
|
194
|
+
• ProductCard (with wishlist prop)
|
|
195
|
+
• Button (existing)
|
|
196
|
+
• ProductGrid (existing)
|
|
197
|
+
• EmptyState (existing)
|
|
198
|
+
|
|
199
|
+
Does this match your vision?
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Sarah suggests one change - she wants the "Add All to Cart" button to be more prominent. ProAgents updates the design.
|
|
203
|
+
|
|
204
|
+
### 9:45 AM - Implementation Plan
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
ProAgents: Here's the implementation plan:
|
|
208
|
+
|
|
209
|
+
════════════════════════════════════════════════════════
|
|
210
|
+
Implementation Plan
|
|
211
|
+
════════════════════════════════════════════════════════
|
|
212
|
+
|
|
213
|
+
Files to Create (12 files):
|
|
214
|
+
|
|
215
|
+
src/features/wishlist/
|
|
216
|
+
├── index.ts # Exports
|
|
217
|
+
├── components/
|
|
218
|
+
│ ├── WishlistButton.tsx # Add/remove button
|
|
219
|
+
│ ├── WishlistPage.tsx # Main page
|
|
220
|
+
│ ├── WishlistItem.tsx # Single item
|
|
221
|
+
│ ├── WishlistSummary.tsx # Total + actions
|
|
222
|
+
│ └── SharedWishlist.tsx # Public view
|
|
223
|
+
├── hooks/
|
|
224
|
+
│ ├── useWishlist.ts # Query hook
|
|
225
|
+
│ ├── useWishlistMutation.ts # Mutations
|
|
226
|
+
│ └── useGuestWishlist.ts # localStorage
|
|
227
|
+
└── server/
|
|
228
|
+
└── wishlist.router.ts # tRPC router
|
|
229
|
+
|
|
230
|
+
prisma/
|
|
231
|
+
└── migrations/xxx_add_wishlist/
|
|
232
|
+
└── migration.sql
|
|
233
|
+
|
|
234
|
+
Files to Modify (4 files):
|
|
235
|
+
• src/components/ProductCard.tsx - Add wishlist button
|
|
236
|
+
• src/server/routers/index.ts - Add wishlist router
|
|
237
|
+
• prisma/schema.prisma - Add models
|
|
238
|
+
• src/app/wishlist/page.tsx - Create page
|
|
239
|
+
|
|
240
|
+
Implementation Order:
|
|
241
|
+
1. Database schema + migration
|
|
242
|
+
2. tRPC router
|
|
243
|
+
3. React Query hooks
|
|
244
|
+
4. Guest wishlist (localStorage)
|
|
245
|
+
5. WishlistButton component
|
|
246
|
+
6. WishlistPage + WishlistItem
|
|
247
|
+
7. SharedWishlist page
|
|
248
|
+
8. Integration with ProductCard
|
|
249
|
+
9. Tests
|
|
250
|
+
|
|
251
|
+
Ready to start implementation?
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Sarah confirms. The plan took 15 minutes to create.
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Act 3: Late Morning - Implementation
|
|
259
|
+
|
|
260
|
+
### 10:00 AM - Database & API
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
ProAgents: Starting implementation...
|
|
264
|
+
|
|
265
|
+
✓ Created database schema
|
|
266
|
+
|
|
267
|
+
// prisma/schema.prisma (additions)
|
|
268
|
+
|
|
269
|
+
model Wishlist {
|
|
270
|
+
id String @id @default(cuid())
|
|
271
|
+
userId String @unique
|
|
272
|
+
user User @relation(fields: [userId], references: [id])
|
|
273
|
+
items WishlistItem[]
|
|
274
|
+
shares WishlistShare[]
|
|
275
|
+
createdAt DateTime @default(now())
|
|
276
|
+
updatedAt DateTime @updatedAt
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
model WishlistItem {
|
|
280
|
+
id String @id @default(cuid())
|
|
281
|
+
wishlistId String
|
|
282
|
+
wishlist Wishlist @relation(fields: [wishlistId], references: [id], onDelete: Cascade)
|
|
283
|
+
productId String
|
|
284
|
+
product Product @relation(fields: [productId], references: [id])
|
|
285
|
+
addedAt DateTime @default(now())
|
|
286
|
+
|
|
287
|
+
@@unique([wishlistId, productId])
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
model WishlistShare {
|
|
291
|
+
id String @id @default(cuid())
|
|
292
|
+
wishlistId String
|
|
293
|
+
wishlist Wishlist @relation(fields: [wishlistId], references: [id], onDelete: Cascade)
|
|
294
|
+
shareCode String @unique @default(cuid())
|
|
295
|
+
expiresAt DateTime?
|
|
296
|
+
createdAt DateTime @default(now())
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
✓ Created migration
|
|
300
|
+
✓ Applied migration
|
|
301
|
+
|
|
302
|
+
✓ Created tRPC router
|
|
303
|
+
|
|
304
|
+
// src/server/routers/wishlist.router.ts
|
|
305
|
+
|
|
306
|
+
export const wishlistRouter = router({
|
|
307
|
+
list: protectedProcedure.query(async ({ ctx }) => {
|
|
308
|
+
return ctx.db.wishlist.findUnique({
|
|
309
|
+
where: { userId: ctx.session.user.id },
|
|
310
|
+
include: {
|
|
311
|
+
items: { include: { product: true } },
|
|
312
|
+
},
|
|
313
|
+
});
|
|
314
|
+
}),
|
|
315
|
+
|
|
316
|
+
add: protectedProcedure
|
|
317
|
+
.input(z.object({ productId: z.string() }))
|
|
318
|
+
.mutation(async ({ ctx, input }) => {
|
|
319
|
+
// ... implementation
|
|
320
|
+
}),
|
|
321
|
+
|
|
322
|
+
remove: protectedProcedure
|
|
323
|
+
.input(z.object({ productId: z.string() }))
|
|
324
|
+
.mutation(async ({ ctx, input }) => {
|
|
325
|
+
// ... implementation
|
|
326
|
+
}),
|
|
327
|
+
|
|
328
|
+
share: protectedProcedure.mutation(async ({ ctx }) => {
|
|
329
|
+
// ... implementation
|
|
330
|
+
}),
|
|
331
|
+
|
|
332
|
+
getShared: publicProcedure
|
|
333
|
+
.input(z.object({ shareCode: z.string() }))
|
|
334
|
+
.query(async ({ ctx, input }) => {
|
|
335
|
+
// ... implementation
|
|
336
|
+
}),
|
|
337
|
+
|
|
338
|
+
migrate: protectedProcedure
|
|
339
|
+
.input(z.object({
|
|
340
|
+
guestItems: z.array(z.string())
|
|
341
|
+
}))
|
|
342
|
+
.mutation(async ({ ctx, input }) => {
|
|
343
|
+
// ... implementation
|
|
344
|
+
}),
|
|
345
|
+
});
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### 10:30 AM - React Hooks
|
|
349
|
+
|
|
350
|
+
```
|
|
351
|
+
ProAgents: ✓ Created React Query hooks
|
|
352
|
+
|
|
353
|
+
// src/features/wishlist/hooks/useWishlist.ts
|
|
354
|
+
|
|
355
|
+
export function useWishlist() {
|
|
356
|
+
return api.wishlist.list.useQuery();
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
export function useWishlistMutation() {
|
|
360
|
+
const utils = api.useUtils();
|
|
361
|
+
|
|
362
|
+
const add = api.wishlist.add.useMutation({
|
|
363
|
+
onMutate: async ({ productId }) => {
|
|
364
|
+
// Optimistic update
|
|
365
|
+
await utils.wishlist.list.cancel();
|
|
366
|
+
const previous = utils.wishlist.list.getData();
|
|
367
|
+
// ... optimistic logic
|
|
368
|
+
return { previous };
|
|
369
|
+
},
|
|
370
|
+
onError: (err, vars, context) => {
|
|
371
|
+
utils.wishlist.list.setData(undefined, context?.previous);
|
|
372
|
+
},
|
|
373
|
+
onSettled: () => {
|
|
374
|
+
utils.wishlist.list.invalidate();
|
|
375
|
+
},
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
// ... remove mutation similar
|
|
379
|
+
|
|
380
|
+
return { add, remove };
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
✓ Created guest wishlist hook
|
|
384
|
+
|
|
385
|
+
// src/features/wishlist/hooks/useGuestWishlist.ts
|
|
386
|
+
|
|
387
|
+
const STORAGE_KEY = 'guest_wishlist';
|
|
388
|
+
|
|
389
|
+
export function useGuestWishlist() {
|
|
390
|
+
const [items, setItems] = useState<string[]>(() => {
|
|
391
|
+
if (typeof window === 'undefined') return [];
|
|
392
|
+
const saved = localStorage.getItem(STORAGE_KEY);
|
|
393
|
+
return saved ? JSON.parse(saved) : [];
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
const add = useCallback((productId: string) => {
|
|
397
|
+
setItems(prev => {
|
|
398
|
+
const next = [...new Set([...prev, productId])];
|
|
399
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(next));
|
|
400
|
+
return next;
|
|
401
|
+
});
|
|
402
|
+
}, []);
|
|
403
|
+
|
|
404
|
+
const remove = useCallback((productId: string) => {
|
|
405
|
+
setItems(prev => {
|
|
406
|
+
const next = prev.filter(id => id !== productId);
|
|
407
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(next));
|
|
408
|
+
return next;
|
|
409
|
+
});
|
|
410
|
+
}, []);
|
|
411
|
+
|
|
412
|
+
const clear = useCallback(() => {
|
|
413
|
+
setItems([]);
|
|
414
|
+
localStorage.removeItem(STORAGE_KEY);
|
|
415
|
+
}, []);
|
|
416
|
+
|
|
417
|
+
return { items, add, remove, clear };
|
|
418
|
+
}
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
### 11:00 AM - Components
|
|
422
|
+
|
|
423
|
+
```
|
|
424
|
+
ProAgents: ✓ Created WishlistButton component
|
|
425
|
+
|
|
426
|
+
// Following existing button patterns in your codebase
|
|
427
|
+
|
|
428
|
+
interface WishlistButtonProps {
|
|
429
|
+
productId: string;
|
|
430
|
+
variant?: 'icon' | 'full';
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
export function WishlistButton({
|
|
434
|
+
productId,
|
|
435
|
+
variant = 'icon'
|
|
436
|
+
}: WishlistButtonProps) {
|
|
437
|
+
const { status } = useSession();
|
|
438
|
+
const { data: wishlist } = useWishlist();
|
|
439
|
+
const { items: guestItems, add: guestAdd, remove: guestRemove } =
|
|
440
|
+
useGuestWishlist();
|
|
441
|
+
const { add, remove } = useWishlistMutation();
|
|
442
|
+
|
|
443
|
+
const isGuest = status !== 'authenticated';
|
|
444
|
+
const isInWishlist = isGuest
|
|
445
|
+
? guestItems.includes(productId)
|
|
446
|
+
: wishlist?.items.some(i => i.productId === productId);
|
|
447
|
+
|
|
448
|
+
const handleClick = () => {
|
|
449
|
+
if (isGuest) {
|
|
450
|
+
isInWishlist ? guestRemove(productId) : guestAdd(productId);
|
|
451
|
+
} else {
|
|
452
|
+
isInWishlist
|
|
453
|
+
? remove.mutate({ productId })
|
|
454
|
+
: add.mutate({ productId });
|
|
455
|
+
}
|
|
456
|
+
};
|
|
457
|
+
|
|
458
|
+
// ... render based on variant
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
✓ Created WishlistPage, WishlistItem, WishlistSummary, SharedWishlist
|
|
462
|
+
|
|
463
|
+
✓ Updated ProductCard to include WishlistButton
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
### 11:30 AM - Page Integration
|
|
467
|
+
|
|
468
|
+
```
|
|
469
|
+
ProAgents: ✓ Created wishlist page
|
|
470
|
+
|
|
471
|
+
// src/app/wishlist/page.tsx
|
|
472
|
+
|
|
473
|
+
export default function WishlistPage() {
|
|
474
|
+
const { data: wishlist, isLoading } = useWishlist();
|
|
475
|
+
const { status } = useSession();
|
|
476
|
+
const { items: guestItems } = useGuestWishlist();
|
|
477
|
+
|
|
478
|
+
if (status === 'unauthenticated' && guestItems.length > 0) {
|
|
479
|
+
return <GuestWishlistView items={guestItems} />;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
if (isLoading) return <WishlistSkeleton />;
|
|
483
|
+
if (!wishlist?.items.length) return <EmptyWishlist />;
|
|
484
|
+
|
|
485
|
+
return (
|
|
486
|
+
<div className="container mx-auto py-8">
|
|
487
|
+
<WishlistHeader
|
|
488
|
+
itemCount={wishlist.items.length}
|
|
489
|
+
onShare={() => {/* ... */}}
|
|
490
|
+
/>
|
|
491
|
+
<ProductGrid>
|
|
492
|
+
{wishlist.items.map(item => (
|
|
493
|
+
<WishlistItem key={item.id} item={item} />
|
|
494
|
+
))}
|
|
495
|
+
</ProductGrid>
|
|
496
|
+
<WishlistSummary items={wishlist.items} />
|
|
497
|
+
</div>
|
|
498
|
+
);
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
✓ Created shared wishlist page
|
|
502
|
+
|
|
503
|
+
// src/app/wishlist/share/[code]/page.tsx
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
---
|
|
507
|
+
|
|
508
|
+
## Act 4: Afternoon - Testing & Review
|
|
509
|
+
|
|
510
|
+
### 12:30 PM - Automated Testing
|
|
511
|
+
|
|
512
|
+
```
|
|
513
|
+
ProAgents: Running tests...
|
|
514
|
+
|
|
515
|
+
════════════════════════════════════════════════════════
|
|
516
|
+
Test Results
|
|
517
|
+
════════════════════════════════════════════════════════
|
|
518
|
+
|
|
519
|
+
Unit Tests:
|
|
520
|
+
✓ WishlistButton shows correct state for wishlisted item
|
|
521
|
+
✓ WishlistButton handles guest wishlist
|
|
522
|
+
✓ WishlistButton shows loading state
|
|
523
|
+
✓ useGuestWishlist persists to localStorage
|
|
524
|
+
✓ useGuestWishlist handles SSR
|
|
525
|
+
✓ WishlistItem renders product info
|
|
526
|
+
✓ WishlistItem handles remove action
|
|
527
|
+
✓ WishlistSummary calculates total correctly
|
|
528
|
+
✓ SharedWishlist hides remove buttons
|
|
529
|
+
|
|
530
|
+
Integration Tests:
|
|
531
|
+
✓ Full wishlist flow (add → view → remove)
|
|
532
|
+
✓ Guest to authenticated migration
|
|
533
|
+
✓ Share wishlist generates link
|
|
534
|
+
✓ Shared wishlist is viewable
|
|
535
|
+
|
|
536
|
+
API Tests:
|
|
537
|
+
✓ wishlist.add creates item
|
|
538
|
+
✓ wishlist.add prevents duplicates
|
|
539
|
+
✓ wishlist.remove deletes item
|
|
540
|
+
✓ wishlist.share creates share code
|
|
541
|
+
✓ wishlist.migrate moves guest items
|
|
542
|
+
|
|
543
|
+
Coverage: 92%
|
|
544
|
+
|
|
545
|
+
All 18 tests passed.
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### 1:00 PM - Code Review
|
|
549
|
+
|
|
550
|
+
```
|
|
551
|
+
ProAgents: Running code review...
|
|
552
|
+
|
|
553
|
+
════════════════════════════════════════════════════════
|
|
554
|
+
Code Review Results
|
|
555
|
+
════════════════════════════════════════════════════════
|
|
556
|
+
|
|
557
|
+
✅ Follows project patterns
|
|
558
|
+
• Feature structure matches cart/
|
|
559
|
+
• tRPC patterns consistent
|
|
560
|
+
• React Query usage correct
|
|
561
|
+
• Component naming matches conventions
|
|
562
|
+
|
|
563
|
+
✅ TypeScript
|
|
564
|
+
• Strict mode compliant
|
|
565
|
+
• No 'any' types
|
|
566
|
+
• Proper null handling
|
|
567
|
+
|
|
568
|
+
✅ Performance
|
|
569
|
+
• Optimistic updates implemented
|
|
570
|
+
• No unnecessary re-renders
|
|
571
|
+
• Efficient database queries
|
|
572
|
+
|
|
573
|
+
✅ Accessibility
|
|
574
|
+
• Buttons have aria-labels
|
|
575
|
+
• Focus states present
|
|
576
|
+
• Screen reader support
|
|
577
|
+
|
|
578
|
+
✅ Security
|
|
579
|
+
• Input validation with Zod
|
|
580
|
+
• User authorization checked
|
|
581
|
+
• No SQL injection risk
|
|
582
|
+
|
|
583
|
+
⚠️ Minor suggestions:
|
|
584
|
+
• Consider adding rate limiting to share endpoint
|
|
585
|
+
• Could add wishlist item limit (suggest: 100)
|
|
586
|
+
|
|
587
|
+
Ready for merge.
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
Sarah reviews the suggestions and decides to add the 100 item limit.
|
|
591
|
+
|
|
592
|
+
---
|
|
593
|
+
|
|
594
|
+
## Act 5: Late Afternoon - Deployment
|
|
595
|
+
|
|
596
|
+
### 2:00 PM - Final Steps
|
|
597
|
+
|
|
598
|
+
```
|
|
599
|
+
ProAgents: Making final adjustments...
|
|
600
|
+
|
|
601
|
+
✓ Added wishlist item limit (100 items)
|
|
602
|
+
✓ Updated tests
|
|
603
|
+
✓ All tests passing
|
|
604
|
+
|
|
605
|
+
Ready to commit and create PR?
|
|
606
|
+
|
|
607
|
+
Sarah: Yes, go ahead.
|
|
608
|
+
|
|
609
|
+
ProAgents: Creating commit...
|
|
610
|
+
|
|
611
|
+
$ git add .
|
|
612
|
+
$ git commit -m "feat(wishlist): add wishlist feature
|
|
613
|
+
|
|
614
|
+
- Add wishlist model and tRPC router
|
|
615
|
+
- Add guest wishlist with localStorage
|
|
616
|
+
- Add guest-to-account migration
|
|
617
|
+
- Add wishlist sharing with public links
|
|
618
|
+
- Add WishlistButton component
|
|
619
|
+
- Add wishlist page with summary
|
|
620
|
+
- Add comprehensive tests (92% coverage)
|
|
621
|
+
- Add 100 item limit
|
|
622
|
+
|
|
623
|
+
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>"
|
|
624
|
+
|
|
625
|
+
$ git push origin feature/wishlist
|
|
626
|
+
|
|
627
|
+
════════════════════════════════════════════════════════
|
|
628
|
+
Pull Request Created
|
|
629
|
+
════════════════════════════════════════════════════════
|
|
630
|
+
|
|
631
|
+
PR #247: feat(wishlist): add wishlist feature
|
|
632
|
+
https://github.com/shopflow/shopflow/pull/247
|
|
633
|
+
|
|
634
|
+
## Summary
|
|
635
|
+
- Users can add products to wishlist
|
|
636
|
+
- Guest wishlists with localStorage persistence
|
|
637
|
+
- Migration to account on login
|
|
638
|
+
- Shareable wishlist links
|
|
639
|
+
|
|
640
|
+
## Test Plan
|
|
641
|
+
- [x] Unit tests (18 passing)
|
|
642
|
+
- [x] Manual testing on local
|
|
643
|
+
- [x] Guest flow verified
|
|
644
|
+
- [x] Share flow verified
|
|
645
|
+
|
|
646
|
+
## Screenshots
|
|
647
|
+
[Attached: wishlist-page.png, wishlist-button.png]
|
|
648
|
+
|
|
649
|
+
Ready for review!
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
### 3:00 PM - Done
|
|
653
|
+
|
|
654
|
+
Sarah's PR is ready for review. The entire feature, from requirements to PR, took about 5 hours.
|
|
655
|
+
|
|
656
|
+
**With ProAgents:**
|
|
657
|
+
- Time: 5 hours (vs 2+ days)
|
|
658
|
+
- Consistent with existing patterns
|
|
659
|
+
- Tests included
|
|
660
|
+
- Documentation automatic
|
|
661
|
+
- No review rework needed
|
|
662
|
+
|
|
663
|
+
---
|
|
664
|
+
|
|
665
|
+
## Epilogue: The Learning Continues
|
|
666
|
+
|
|
667
|
+
*Two weeks later, Sarah starts another feature. ProAgents has learned from the wishlist work.*
|
|
668
|
+
|
|
669
|
+
```
|
|
670
|
+
Sarah: Add a product comparison feature.
|
|
671
|
+
|
|
672
|
+
ProAgents: I'll help you build a comparison feature.
|
|
673
|
+
|
|
674
|
+
[Learning Applied]
|
|
675
|
+
• Following feature/ folder pattern (learned from wishlist)
|
|
676
|
+
• Using tRPC + React Query (project standard)
|
|
677
|
+
• Including guest localStorage support (you did this for wishlist)
|
|
678
|
+
• Auto-skipping requirements checkpoint (you usually proceed quickly)
|
|
679
|
+
|
|
680
|
+
Based on wishlist, I expect you'll want:
|
|
681
|
+
• Optimistic updates
|
|
682
|
+
• Guest support with migration
|
|
683
|
+
• Shareable comparison links
|
|
684
|
+
|
|
685
|
+
Shall I include these by default?
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
ProAgents remembers. It learns. It gets better.
|
|
689
|
+
|
|
690
|
+
---
|
|
691
|
+
|
|
692
|
+
## Summary: The ProAgents Difference
|
|
693
|
+
|
|
694
|
+
| Aspect | Without ProAgents | With ProAgents |
|
|
695
|
+
|--------|-------------------|----------------|
|
|
696
|
+
| **Pattern Discovery** | Manual search, inconsistent | Automatic, consistent |
|
|
697
|
+
| **Requirements** | Written docs, back-and-forth | Interactive, immediate |
|
|
698
|
+
| **UI Design** | Separate design process | Inline with existing patterns |
|
|
699
|
+
| **Implementation** | Code from scratch | Following detected patterns |
|
|
700
|
+
| **Testing** | Often skipped or minimal | Automatic, comprehensive |
|
|
701
|
+
| **Code Review** | Wait for teammates | Instant AI review |
|
|
702
|
+
| **Documentation** | Manual, often forgotten | Automatic |
|
|
703
|
+
| **Learning** | Repeat mistakes | Continuous improvement |
|
|
704
|
+
| **Total Time** | 2+ days | 5 hours |
|
|
705
|
+
|
|
706
|
+
---
|
|
707
|
+
|
|
708
|
+
*The end. Time to build something amazing.*
|