proagents 1.6.16 → 1.6.18

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.
Files changed (170) hide show
  1. package/.claude/settings.local.json +169 -0
  2. package/COMMANDS.md +595 -0
  3. package/README.md +22 -64
  4. package/bin/proagents.js +0 -2
  5. package/lib/commands/init.js +4 -174
  6. package/package.json +2 -7
  7. package/.proagents/ai-models/README.md +0 -141
  8. package/.proagents/ai-models/cost-management.md +0 -362
  9. package/.proagents/ai-models/fallbacks.md +0 -342
  10. package/.proagents/ai-models/model-config.md +0 -318
  11. package/.proagents/ai-models/task-routing.md +0 -503
  12. package/.proagents/ai-training/README.md +0 -155
  13. package/.proagents/ai-training/continuous-learning.md +0 -413
  14. package/.proagents/ai-training/domain-knowledge.md +0 -378
  15. package/.proagents/ai-training/pattern-learning.md +0 -455
  16. package/.proagents/ai-training/training-data.md +0 -337
  17. package/.proagents/ai-training/user-preferences.md +0 -346
  18. package/.proagents/approval-workflows/README.md +0 -146
  19. package/.proagents/approval-workflows/approval-config.md +0 -332
  20. package/.proagents/approval-workflows/approval-stages.md +0 -503
  21. package/.proagents/approval-workflows/emergency-bypass.md +0 -351
  22. package/.proagents/approval-workflows/examples.md +0 -859
  23. package/.proagents/approval-workflows/notifications.md +0 -320
  24. package/.proagents/compliance/README.md +0 -206
  25. package/.proagents/compliance/access-control.md +0 -310
  26. package/.proagents/compliance/audit-logging.md +0 -444
  27. package/.proagents/compliance/compliance-frameworks.md +0 -429
  28. package/.proagents/compliance/reports.md +0 -491
  29. package/.proagents/compliance/retention-policies.md +0 -454
  30. package/.proagents/config-versioning/README.md +0 -120
  31. package/.proagents/config-versioning/changelog.md +0 -300
  32. package/.proagents/config-versioning/rollback.md +0 -283
  33. package/.proagents/config-versioning/versioning.md +0 -330
  34. package/.proagents/contract-testing/README.md +0 -223
  35. package/.proagents/contract-testing/contract-testing.md +0 -614
  36. package/.proagents/contract-testing/pact-integration.md +0 -507
  37. package/.proagents/contract-testing/schema-validation.md +0 -565
  38. package/.proagents/dependency-management/README.md +0 -140
  39. package/.proagents/dependency-management/automation.md +0 -363
  40. package/.proagents/dependency-management/compatibility.md +0 -319
  41. package/.proagents/dependency-management/security-scanning.md +0 -413
  42. package/.proagents/dependency-management/update-policies.md +0 -374
  43. package/.proagents/disaster-recovery/README.md +0 -247
  44. package/.proagents/disaster-recovery/automation.md +0 -366
  45. package/.proagents/disaster-recovery/backup-recovery.md +0 -571
  46. package/.proagents/disaster-recovery/incident-response.md +0 -565
  47. package/.proagents/disaster-recovery/rollback-procedures.md +0 -499
  48. package/.proagents/disaster-recovery/runbooks.md +0 -603
  49. package/.proagents/disaster-recovery/scenarios.md +0 -892
  50. package/.proagents/disaster-recovery/testing.md +0 -438
  51. package/.proagents/environments/README.md +0 -244
  52. package/.proagents/environments/configuration.md +0 -437
  53. package/.proagents/environments/promotion.md +0 -434
  54. package/.proagents/environments/setup.md +0 -420
  55. package/.proagents/examples/README.md +0 -55
  56. package/.proagents/examples/backend-nodejs/README.md +0 -188
  57. package/.proagents/examples/backend-nodejs/complete-conversation.md +0 -601
  58. package/.proagents/examples/backend-nodejs/proagents.config.yaml +0 -415
  59. package/.proagents/examples/backend-nodejs/workflow-example.md +0 -909
  60. package/.proagents/examples/fullstack-nextjs/README.md +0 -155
  61. package/.proagents/examples/fullstack-nextjs/complete-conversation.md +0 -604
  62. package/.proagents/examples/fullstack-nextjs/proagents.config.yaml +0 -287
  63. package/.proagents/examples/fullstack-nextjs/workflow-example.md +0 -553
  64. package/.proagents/examples/mobile-react-native/README.md +0 -171
  65. package/.proagents/examples/mobile-react-native/complete-conversation.md +0 -825
  66. package/.proagents/examples/mobile-react-native/proagents.config.yaml +0 -330
  67. package/.proagents/examples/mobile-react-native/workflow-example.md +0 -723
  68. package/.proagents/examples/web-frontend-react/README.md +0 -125
  69. package/.proagents/examples/web-frontend-react/complete-conversation.md +0 -556
  70. package/.proagents/examples/web-frontend-react/proagents.config.yaml +0 -183
  71. package/.proagents/examples/web-frontend-react/workflow-example.md +0 -603
  72. package/.proagents/existing-projects/README.md +0 -65
  73. package/.proagents/existing-projects/challenges.md +0 -861
  74. package/.proagents/existing-projects/coexistence-mode.md +0 -483
  75. package/.proagents/existing-projects/compatibility-assessment.md +0 -541
  76. package/.proagents/existing-projects/gradual-adoption.md +0 -515
  77. package/.proagents/existing-projects/migration-strategies.md +0 -788
  78. package/.proagents/existing-projects/pattern-reconciliation.md +0 -489
  79. package/.proagents/existing-projects/team-onboarding.md +0 -617
  80. package/.proagents/existing-projects/technical-debt-handling.md +0 -644
  81. package/.proagents/feature-flags/README.md +0 -263
  82. package/.proagents/feature-flags/ab-testing.md +0 -413
  83. package/.proagents/feature-flags/configuration.md +0 -420
  84. package/.proagents/feature-flags/kill-switches.md +0 -444
  85. package/.proagents/feature-flags/rollout-strategies.md +0 -392
  86. package/.proagents/history.log +0 -12
  87. package/.proagents/i18n/README.md +0 -133
  88. package/.proagents/i18n/extraction.md +0 -433
  89. package/.proagents/i18n/tms-integration.md +0 -332
  90. package/.proagents/i18n/translation-workflow.md +0 -413
  91. package/.proagents/i18n/validation.md +0 -355
  92. package/.proagents/logging/README.md +0 -276
  93. package/.proagents/logging/aggregation.md +0 -475
  94. package/.proagents/logging/log-levels.md +0 -376
  95. package/.proagents/logging/sensitive-data.md +0 -423
  96. package/.proagents/logging/structured-logging.md +0 -406
  97. package/.proagents/metrics/README.md +0 -69
  98. package/.proagents/metrics/code-quality-kpis.md +0 -461
  99. package/.proagents/metrics/deployment-metrics.md +0 -517
  100. package/.proagents/metrics/developer-productivity.md +0 -368
  101. package/.proagents/metrics/learning-effectiveness.md +0 -478
  102. package/.proagents/migrations/README.md +0 -77
  103. package/.proagents/migrations/from-claude-projects.md +0 -313
  104. package/.proagents/migrations/from-cursor-rules.md +0 -345
  105. package/.proagents/migrations/from-custom-workflows.md +0 -410
  106. package/.proagents/monitoring/README.md +0 -308
  107. package/.proagents/monitoring/alerting.md +0 -449
  108. package/.proagents/monitoring/dashboards.md +0 -454
  109. package/.proagents/monitoring/health-checks.md +0 -436
  110. package/.proagents/monitoring/metrics.md +0 -434
  111. package/.proagents/multi-project/README.md +0 -170
  112. package/.proagents/multi-project/coordinated-deploy.md +0 -510
  113. package/.proagents/multi-project/cross-project-deps.md +0 -395
  114. package/.proagents/multi-project/unified-changelog.md +0 -477
  115. package/.proagents/multi-project/walkthroughs/monorepo-setup.md +0 -787
  116. package/.proagents/multi-project/workspace-config.md +0 -408
  117. package/.proagents/notifications/README.md +0 -151
  118. package/.proagents/notifications/channels.md +0 -457
  119. package/.proagents/notifications/preferences.md +0 -415
  120. package/.proagents/notifications/routing.md +0 -449
  121. package/.proagents/notifications/scheduling.md +0 -425
  122. package/.proagents/notifications/templates.md +0 -446
  123. package/.proagents/offline-mode/README.md +0 -145
  124. package/.proagents/offline-mode/caching.md +0 -344
  125. package/.proagents/offline-mode/offline-operations.md +0 -312
  126. package/.proagents/offline-mode/queue-specifications.md +0 -679
  127. package/.proagents/offline-mode/sync.md +0 -475
  128. package/.proagents/parallel-features/README.md +0 -85
  129. package/.proagents/parallel-features/conflict-detection.md +0 -226
  130. package/.proagents/parallel-features/dependency-management.md +0 -392
  131. package/.proagents/parallel-features/merge-coordination.md +0 -506
  132. package/.proagents/parallel-features/tracking-system.md +0 -416
  133. package/.proagents/performance/README.md +0 -59
  134. package/.proagents/performance/bundle-analysis.md +0 -375
  135. package/.proagents/performance/load-testing.md +0 -563
  136. package/.proagents/performance/runtime-metrics.md +0 -489
  137. package/.proagents/performance/web-vitals.md +0 -425
  138. package/.proagents/plugins/README.md +0 -139
  139. package/.proagents/plugins/creating-plugins.md +0 -504
  140. package/.proagents/plugins/plugin-api.md +0 -467
  141. package/.proagents/plugins/plugin-registry.md +0 -276
  142. package/.proagents/reporting/README.md +0 -158
  143. package/.proagents/reporting/dashboards.md +0 -366
  144. package/.proagents/reporting/exports.md +0 -524
  145. package/.proagents/reporting/quality-metrics.md +0 -385
  146. package/.proagents/reporting/templates/README.md +0 -56
  147. package/.proagents/reporting/templates/dashboard-config.json +0 -187
  148. package/.proagents/reporting/templates/metrics-queries.md +0 -427
  149. package/.proagents/reporting/templates/react-dashboard.tsx +0 -544
  150. package/.proagents/reporting/templates/widgets.md +0 -451
  151. package/.proagents/reporting/velocity-metrics.md +0 -340
  152. package/.proagents/reverse-engineering/README.md +0 -151
  153. package/.proagents/reverse-engineering/architecture-extraction.md +0 -325
  154. package/.proagents/reverse-engineering/code-analysis.md +0 -377
  155. package/.proagents/reverse-engineering/dependency-mapping.md +0 -567
  156. package/.proagents/reverse-engineering/diagram-generation.md +0 -586
  157. package/.proagents/reverse-engineering/documentation-generation.md +0 -468
  158. package/.proagents/reverse-engineering/pattern-detection.md +0 -569
  159. package/.proagents/reverse-engineering/quality-assessment.md +0 -733
  160. package/.proagents/secrets/README.md +0 -278
  161. package/.proagents/secrets/access-control.md +0 -443
  162. package/.proagents/secrets/rotation.md +0 -403
  163. package/.proagents/secrets/scanning.md +0 -487
  164. package/.proagents/secrets/storage.md +0 -394
  165. package/.proagents/webhooks/README.md +0 -126
  166. package/.proagents/webhooks/endpoints.md +0 -298
  167. package/.proagents/webhooks/events.md +0 -316
  168. package/.proagents/webhooks/payloads.md +0 -325
  169. package/.proagents/webhooks/reliability.md +0 -363
  170. package/.proagents/webhooks/security.md +0 -380
@@ -1,788 +0,0 @@
1
- # Migration Strategies
2
-
3
- Strategies for migrating different aspects of existing projects to ProAgents standards.
4
-
5
- ---
6
-
7
- ## Overview
8
-
9
- Migration involves:
10
- - Code pattern migrations (legacy → modern)
11
- - Dependency updates
12
- - Test coverage improvement
13
- - Documentation generation
14
- - Process adoption
15
-
16
- This guide covers each migration type with strategies, risks, and step-by-step procedures.
17
-
18
- ---
19
-
20
- ## Migration Types
21
-
22
- ```
23
- ┌─────────────────────────────────────────────────────────────┐
24
- │ Migration Categories │
25
- ├─────────────────────────────────────────────────────────────┤
26
- │ │
27
- │ Code Migrations Process Migrations │
28
- │ ─────────────── ────────────────── │
29
- │ • Class → Functional • Manual → Automated │
30
- │ • Redux → Zustand • Ad-hoc → Structured │
31
- │ • JavaScript → TypeScript • No docs → Documented │
32
- │ • Legacy patterns • No tests → Tested │
33
- │ │
34
- │ Dependency Migrations Infrastructure Migrations │
35
- │ ──────────────────── ───────────────────── │
36
- │ • Outdated → Current • No CI → CI/CD │
37
- │ • Vulnerable → Secure • Manual deploy → Automated │
38
- │ • Major version upgrades • No monitoring → Monitored │
39
- │ │
40
- └─────────────────────────────────────────────────────────────┘
41
- ```
42
-
43
- ---
44
-
45
- ## Strategy Selection
46
-
47
- ### When to Use Each Strategy
48
-
49
- | Strategy | Best For | Risk | Effort | Timeline |
50
- |----------|----------|------|--------|----------|
51
- | Gradual | Large codebases, active development | Low | Medium | Ongoing |
52
- | Opportunistic | Moderate codebases, regular changes | Low | Low | As-needed |
53
- | Dedicated | Critical migrations, clear deadline | Medium | High | Fixed |
54
- | Big Bang | Small codebases, major refactoring | High | High | Short |
55
-
56
- ### Decision Matrix
57
-
58
- ```yaml
59
- migration_decision:
60
- questions:
61
- - question: "How large is the affected codebase?"
62
- options:
63
- small: "< 50 files"
64
- medium: "50-200 files"
65
- large: "> 200 files"
66
-
67
- - question: "How critical is the code?"
68
- options:
69
- low: "Non-critical features"
70
- medium: "Important but not critical"
71
- high: "Core business logic"
72
-
73
- - question: "What's your timeline?"
74
- options:
75
- flexible: "No deadline"
76
- moderate: "Within quarter"
77
- urgent: "Within weeks"
78
-
79
- recommendations:
80
- small_low_flexible: "Big Bang"
81
- small_high_urgent: "Dedicated"
82
- medium_any_any: "Gradual or Opportunistic"
83
- large_any_any: "Gradual"
84
- any_high_any: "Extra testing, staged rollout"
85
- ```
86
-
87
- ---
88
-
89
- ## Strategy 1: Gradual Migration
90
-
91
- Best for large codebases with ongoing development.
92
-
93
- ### Approach
94
-
95
- ```yaml
96
- gradual_migration:
97
- principle: "Migrate code as it's touched"
98
-
99
- process:
100
- 1: "Identify file to modify"
101
- 2: "Check migration status"
102
- 3: "If not migrated, migrate now"
103
- 4: "Add tests for migrated code"
104
- 5: "Verify functionality"
105
- 6: "Commit migration with feature"
106
-
107
- timeline: "Ongoing (6-12 months for full migration)"
108
-
109
- example:
110
- scenario: "Developer modifies UserProfile.tsx"
111
- current_state: "Class component"
112
- action: "Convert to functional while making changes"
113
- ```
114
-
115
- ### Implementation
116
-
117
- ```yaml
118
- gradual_implementation:
119
- setup:
120
- - "Create migration tracking"
121
- - "Define migration criteria"
122
- - "Train team on process"
123
-
124
- tracking:
125
- file: ".proagents/migrations/status.yaml"
126
- content: |
127
- migrations:
128
- class_to_functional:
129
- total_files: 45
130
- migrated: 0
131
- in_progress: 0
132
- remaining: 45
133
-
134
- redux_to_zustand:
135
- total_files: 30
136
- migrated: 0
137
- remaining: 30
138
-
139
- automation:
140
- on_file_open:
141
- - "Check if file needs migration"
142
- - "Suggest migration if applicable"
143
-
144
- on_pr:
145
- - "Check for migration opportunities"
146
- - "Track migration progress"
147
- ```
148
-
149
- ### Progress Tracking
150
-
151
- ```
152
- ┌─────────────────────────────────────────────────────────────┐
153
- │ Gradual Migration Progress │
154
- ├─────────────────────────────────────────────────────────────┤
155
- │ │
156
- │ Class → Functional Components │
157
- │ ████████████░░░░░░░░ 60% (27/45 files) │
158
- │ Estimated completion: 3 months at current pace │
159
- │ │
160
- │ Redux → Zustand │
161
- │ ██████░░░░░░░░░░░░░░ 30% (9/30 files) │
162
- │ Estimated completion: 5 months at current pace │
163
- │ │
164
- │ JavaScript → TypeScript │
165
- │ ████████████████░░░░ 80% (120/150 files) │
166
- │ Estimated completion: 1 month at current pace │
167
- │ │
168
- └─────────────────────────────────────────────────────────────┘
169
- ```
170
-
171
- ---
172
-
173
- ## Strategy 2: Opportunistic Migration
174
-
175
- Best for codebases with regular changes but no dedicated migration time.
176
-
177
- ### Approach
178
-
179
- ```yaml
180
- opportunistic_migration:
181
- principle: "Migrate when opportunity presents"
182
-
183
- triggers:
184
- - "Bug fix in legacy code"
185
- - "Feature addition touching legacy code"
186
- - "Refactoring for other reasons"
187
- - "Code review identifies candidate"
188
-
189
- rules:
190
- must_migrate:
191
- - "Touching file for 3rd time without migrating"
192
- - "Security vulnerability in legacy code"
193
-
194
- should_migrate:
195
- - "Bug fix in legacy code"
196
- - "Adding significant functionality"
197
-
198
- can_skip:
199
- - "Urgent hotfix"
200
- - "Minor text change"
201
- - "Would significantly delay delivery"
202
- ```
203
-
204
- ### Implementation
205
-
206
- ```yaml
207
- opportunistic_implementation:
208
- detection:
209
- on_file_change:
210
- check: "Is this file a migration candidate?"
211
- if_yes: "Show migration suggestion"
212
- track: "How many times file touched without migration"
213
-
214
- suggestion_template: |
215
- 📋 Migration Opportunity Detected
216
-
217
- File: {filename}
218
- Current Pattern: {current_pattern}
219
- Target Pattern: {target_pattern}
220
- Estimated Time: {estimated_time}
221
-
222
- This file has been touched {touch_count} times.
223
- Consider migrating while making this change.
224
-
225
- [Migrate Now] [Migrate Later] [Skip]
226
-
227
- escalation:
228
- after_3_touches: "Strongly recommend migration"
229
- after_5_touches: "Require justification to skip"
230
- ```
231
-
232
- ---
233
-
234
- ## Strategy 3: Dedicated Migration
235
-
236
- Best when you can allocate specific time for migration.
237
-
238
- ### Approach
239
-
240
- ```yaml
241
- dedicated_migration:
242
- principle: "Focused migration effort with dedicated resources"
243
-
244
- structure:
245
- sprint_0:
246
- name: "Planning"
247
- activities:
248
- - "Inventory all migration targets"
249
- - "Prioritize by risk/impact"
250
- - "Create detailed migration plan"
251
- - "Set up testing infrastructure"
252
-
253
- sprints_1_n:
254
- name: "Execution"
255
- activities:
256
- - "Migrate in priority order"
257
- - "Test thoroughly"
258
- - "Code review"
259
- - "Document changes"
260
-
261
- sprint_final:
262
- name: "Verification"
263
- activities:
264
- - "Full regression testing"
265
- - "Performance comparison"
266
- - "Documentation update"
267
- - "Team training if needed"
268
- ```
269
-
270
- ### Sprint Planning
271
-
272
- ```yaml
273
- migration_sprint_plan:
274
- sprint_1:
275
- goal: "Migrate authentication module"
276
- files:
277
- - "src/auth/AuthContext.tsx"
278
- - "src/auth/LoginForm.tsx"
279
- - "src/auth/RegisterForm.tsx"
280
- - "src/auth/authService.ts"
281
- estimated_effort: "3 days"
282
- assigned_to: "dev-1, dev-2"
283
- success_criteria:
284
- - "All files converted to functional"
285
- - "Test coverage > 80%"
286
- - "All existing tests pass"
287
-
288
- sprint_2:
289
- goal: "Migrate user module"
290
- files:
291
- - "src/user/UserProfile.tsx"
292
- - "src/user/UserSettings.tsx"
293
- - "src/user/userService.ts"
294
- estimated_effort: "2 days"
295
- assigned_to: "dev-1"
296
- ```
297
-
298
- ### Risk Mitigation
299
-
300
- ```yaml
301
- dedicated_migration_risks:
302
- risk_1:
303
- name: "Regression bugs"
304
- mitigation:
305
- - "Comprehensive test suite before migration"
306
- - "Side-by-side testing"
307
- - "Feature flags for rollback"
308
-
309
- risk_2:
310
- name: "Timeline overrun"
311
- mitigation:
312
- - "Buffer time in schedule"
313
- - "Priority-based scope cutting"
314
- - "Clear definition of done"
315
-
316
- risk_3:
317
- name: "Team unavailability"
318
- mitigation:
319
- - "Cross-training before sprint"
320
- - "Document decisions and progress"
321
- - "Backup resources identified"
322
- ```
323
-
324
- ---
325
-
326
- ## Strategy 4: Big Bang Migration
327
-
328
- Best for small codebases or when complete rewrite is justified.
329
-
330
- ### Approach
331
-
332
- ```yaml
333
- big_bang_migration:
334
- principle: "Migrate everything at once"
335
-
336
- suitable_when:
337
- - "Small codebase (< 50 files)"
338
- - "Low complexity"
339
- - "Good test coverage exists"
340
- - "Team can pause feature work"
341
- - "Clear deadline requiring full migration"
342
-
343
- NOT_suitable_when:
344
- - "Large codebase"
345
- - "Critical production system"
346
- - "No test coverage"
347
- - "Ongoing feature work"
348
-
349
- process:
350
- 1: "Complete code freeze"
351
- 2: "Full codebase migration"
352
- 3: "Comprehensive testing"
353
- 4: "Staged rollout"
354
- 5: "Resume feature work"
355
- ```
356
-
357
- ### Big Bang Checklist
358
-
359
- ```markdown
360
- ## Big Bang Migration Checklist
361
-
362
- ### Pre-Migration
363
- - [ ] Full codebase backup
364
- - [ ] Test suite runs green
365
- - [ ] Migration plan documented
366
- - [ ] Rollback plan ready
367
- - [ ] Team availability confirmed
368
- - [ ] Stakeholder approval
369
-
370
- ### During Migration
371
- - [ ] Code freeze in effect
372
- - [ ] Progress tracked hourly
373
- - [ ] Issues logged immediately
374
- - [ ] Daily standup
375
-
376
- ### Post-Migration
377
- - [ ] All tests passing
378
- - [ ] Performance benchmarks met
379
- - [ ] Security scan clean
380
- - [ ] Documentation updated
381
- - [ ] Team trained on changes
382
- - [ ] Monitoring in place
383
- ```
384
-
385
- ---
386
-
387
- ## Specific Migration Guides
388
-
389
- ### Class Components → Functional Components
390
-
391
- ```yaml
392
- class_to_functional:
393
- complexity: "Low-Medium"
394
-
395
- automated_conversion:
396
- tool: "react-codemod"
397
- command: "npx react-codemod React-Component-to-Functional"
398
- success_rate: "70%"
399
- manual_review: "Required"
400
-
401
- manual_steps:
402
- 1:
403
- name: "Convert class to function"
404
- before: |
405
- class UserProfile extends React.Component {
406
- state = { user: null };
407
-
408
- componentDidMount() {
409
- this.fetchUser();
410
- }
411
-
412
- render() {
413
- return <div>{this.state.user?.name}</div>;
414
- }
415
- }
416
-
417
- after: |
418
- const UserProfile: FC = () => {
419
- const [user, setUser] = useState<User | null>(null);
420
-
421
- useEffect(() => {
422
- fetchUser();
423
- }, []);
424
-
425
- return <div>{user?.name}</div>;
426
- };
427
-
428
- 2:
429
- name: "Convert lifecycle methods"
430
- mapping:
431
- componentDidMount: "useEffect with []"
432
- componentDidUpdate: "useEffect with deps"
433
- componentWillUnmount: "useEffect cleanup"
434
-
435
- 3:
436
- name: "Convert this.setState"
437
- mapping:
438
- "this.setState({ x })": "setX(value)"
439
- "this.state.x": "x"
440
-
441
- testing:
442
- before_migration: "Ensure tests exist"
443
- after_migration: "Run same tests, should pass"
444
- ```
445
-
446
- ### Redux → Zustand
447
-
448
- ```yaml
449
- redux_to_zustand:
450
- complexity: "Medium"
451
-
452
- migration_steps:
453
- 1:
454
- name: "Create Zustand store"
455
- from: |
456
- // Redux slice
457
- const userSlice = createSlice({
458
- name: 'user',
459
- initialState: { user: null, loading: false },
460
- reducers: {
461
- setUser: (state, action) => {
462
- state.user = action.payload;
463
- },
464
- setLoading: (state, action) => {
465
- state.loading = action.payload;
466
- }
467
- }
468
- });
469
-
470
- to: |
471
- // Zustand store
472
- interface UserStore {
473
- user: User | null;
474
- loading: boolean;
475
- setUser: (user: User) => void;
476
- setLoading: (loading: boolean) => void;
477
- }
478
-
479
- const useUserStore = create<UserStore>((set) => ({
480
- user: null,
481
- loading: false,
482
- setUser: (user) => set({ user }),
483
- setLoading: (loading) => set({ loading }),
484
- }));
485
-
486
- 2:
487
- name: "Update component usage"
488
- from: |
489
- const user = useSelector(state => state.user.user);
490
- const dispatch = useDispatch();
491
- dispatch(setUser(newUser));
492
-
493
- to: |
494
- const user = useUserStore(state => state.user);
495
- const setUser = useUserStore(state => state.setUser);
496
- setUser(newUser);
497
-
498
- 3:
499
- name: "Migrate async actions"
500
- from: "createAsyncThunk"
501
- to: "Regular async functions in store"
502
-
503
- coexistence:
504
- during_migration: |
505
- // Bridge pattern for gradual migration
506
- const useUserBridge = () => {
507
- // Check which store has data
508
- const zustandUser = useUserStore(s => s.user);
509
- const reduxUser = useSelector(s => s.user.user);
510
- return zustandUser || reduxUser;
511
- };
512
- ```
513
-
514
- ### JavaScript → TypeScript
515
-
516
- ```yaml
517
- javascript_to_typescript:
518
- complexity: "Medium-High"
519
-
520
- approach:
521
- 1:
522
- name: "Configure TypeScript"
523
- actions:
524
- - "Add tsconfig.json"
525
- - "Enable allowJs: true"
526
- - "Set strict: false initially"
527
-
528
- 2:
529
- name: "Rename files gradually"
530
- pattern: ".js → .ts, .jsx → .tsx"
531
- order: "Leaf files first, then dependencies"
532
-
533
- 3:
534
- name: "Add types progressively"
535
- stages:
536
- - "Add explicit any where needed"
537
- - "Replace any with proper types"
538
- - "Enable stricter options"
539
-
540
- automated_tools:
541
- - name: "TypeScript's own inference"
542
- usage: "Let TS infer where possible"
543
-
544
- - name: "ts-migrate"
545
- usage: "npx ts-migrate-full ."
546
-
547
- type_extraction:
548
- from_jsdoc: |
549
- /**
550
- * @param {string} name
551
- * @param {number} age
552
- * @returns {User}
553
- */
554
- function createUser(name, age) { }
555
-
556
- to_typescript: |
557
- function createUser(name: string, age: number): User { }
558
-
559
- common_issues:
560
- implicit_any:
561
- solution: "Add types or use type inference"
562
-
563
- missing_types:
564
- solution: "Check @types packages or create custom types"
565
-
566
- third_party_libs:
567
- solution: "Install @types/[package] or declare module"
568
- ```
569
-
570
- ### Dependency Major Version Upgrades
571
-
572
- ```yaml
573
- major_version_upgrade:
574
- complexity: "Variable"
575
-
576
- example_react_17_to_18:
577
- breaking_changes:
578
- - "Automatic batching"
579
- - "Strict mode behavior"
580
- - "Suspense changes"
581
- - "New root API"
582
-
583
- migration_steps:
584
- 1:
585
- name: "Update dependencies"
586
- commands:
587
- - "npm install react@18 react-dom@18"
588
- - "npm install @types/react@18 @types/react-dom@18"
589
-
590
- 2:
591
- name: "Update root render"
592
- before: |
593
- import ReactDOM from 'react-dom';
594
- ReactDOM.render(<App />, document.getElementById('root'));
595
-
596
- after: |
597
- import { createRoot } from 'react-dom/client';
598
- const root = createRoot(document.getElementById('root')!);
599
- root.render(<App />);
600
-
601
- 3:
602
- name: "Address breaking changes"
603
- actions:
604
- - "Test automatic batching impact"
605
- - "Update Suspense usage"
606
- - "Fix strict mode warnings"
607
-
608
- 4:
609
- name: "Test thoroughly"
610
- focus:
611
- - "State update behavior"
612
- - "useEffect timing"
613
- - "Suspense boundaries"
614
- ```
615
-
616
- ---
617
-
618
- ## Migration Testing
619
-
620
- ### Before Migration
621
-
622
- ```yaml
623
- pre_migration_testing:
624
- requirements:
625
- - "All existing tests passing"
626
- - "Baseline performance metrics captured"
627
- - "Behavior snapshot if possible"
628
-
629
- baseline_capture:
630
- tests: "npm test -- --coverage > baseline-coverage.txt"
631
- performance: "lighthouse report saved"
632
- behavior: "E2E tests recording"
633
- ```
634
-
635
- ### During Migration
636
-
637
- ```yaml
638
- during_migration_testing:
639
- continuous:
640
- - "Run tests after each file migration"
641
- - "Check for regressions immediately"
642
-
643
- comparison:
644
- - "Old vs new behavior"
645
- - "Performance comparison"
646
-
647
- isolation:
648
- - "Test migrated code independently"
649
- - "Integration test with non-migrated code"
650
- ```
651
-
652
- ### After Migration
653
-
654
- ```yaml
655
- post_migration_testing:
656
- comprehensive:
657
- - "Full test suite run"
658
- - "E2E tests"
659
- - "Performance benchmarks"
660
-
661
- comparison:
662
- - "Coverage same or better"
663
- - "Performance same or better"
664
- - "No new bugs"
665
-
666
- monitoring:
667
- - "Error tracking after deploy"
668
- - "Performance monitoring"
669
- - "User feedback"
670
- ```
671
-
672
- ---
673
-
674
- ## Rollback Procedures
675
-
676
- ### Quick Rollback
677
-
678
- ```yaml
679
- quick_rollback:
680
- use_when: "Migration causes immediate issues"
681
-
682
- steps:
683
- 1: "Identify the problem"
684
- 2: "Revert commits (git revert)"
685
- 3: "Deploy previous version"
686
- 4: "Verify rollback successful"
687
-
688
- commands: |
689
- # Revert migration commits
690
- git revert <migration-commit-hash>
691
-
692
- # Or reset to pre-migration state
693
- git reset --hard <pre-migration-tag>
694
-
695
- # Deploy
696
- npm run deploy
697
- ```
698
-
699
- ### Partial Rollback
700
-
701
- ```yaml
702
- partial_rollback:
703
- use_when: "Only specific migrations have issues"
704
-
705
- approach:
706
- 1: "Identify problematic files"
707
- 2: "Revert only those files"
708
- 3: "Keep successful migrations"
709
-
710
- commands: |
711
- # Revert specific files
712
- git checkout <pre-migration-commit> -- path/to/problem/file.tsx
713
-
714
- # Commit the revert
715
- git commit -m "Revert: problematic migration for file.tsx"
716
- ```
717
-
718
- ### Feature Flag Rollback
719
-
720
- ```yaml
721
- feature_flag_rollback:
722
- use_when: "Using feature flags for migration"
723
-
724
- setup:
725
- flag_name: "USE_NEW_AUTH_IMPLEMENTATION"
726
- default: false
727
-
728
- code: |
729
- const AuthComponent = () => {
730
- if (featureFlags.USE_NEW_AUTH_IMPLEMENTATION) {
731
- return <NewAuth />;
732
- }
733
- return <LegacyAuth />;
734
- };
735
-
736
- rollback:
737
- action: "Set flag to false"
738
- effect: "Immediate switch to old implementation"
739
- no_deploy_needed: true
740
- ```
741
-
742
- ---
743
-
744
- ## Configuration
745
-
746
- ```yaml
747
- # proagents.config.yaml
748
-
749
- migrations:
750
- tracking:
751
- enabled: true
752
- file: ".proagents/migrations/status.yaml"
753
-
754
- strategy:
755
- default: "gradual"
756
- suggest_on_file_touch: true
757
-
758
- automated:
759
- class_to_functional:
760
- enabled: true
761
- auto_suggest: true
762
-
763
- typescript:
764
- enabled: true
765
- auto_add_types: true
766
-
767
- testing:
768
- require_before_migration: true
769
- require_after_migration: true
770
- coverage_threshold: 80
771
-
772
- rollback:
773
- create_restore_point: true
774
- feature_flags: true
775
- ```
776
-
777
- ---
778
-
779
- ## Commands
780
-
781
- | Command | Description |
782
- |---------|-------------|
783
- | `pa:migrate-status` | View migration progress |
784
- | `pa:migrate-plan [type]` | Create migration plan |
785
- | `pa:migrate-file [path]` | Migrate specific file |
786
- | `pa:migrate-module [name]` | Migrate entire module |
787
- | `pa:migrate-rollback [id]` | Rollback migration |
788
- | `pa:migrate-report` | Generate migration report |