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.
Files changed (444) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +170 -0
  3. package/bin/proagents.js +90 -0
  4. package/lib/commands/feature.js +125 -0
  5. package/lib/commands/fix.js +60 -0
  6. package/lib/commands/help.js +76 -0
  7. package/lib/commands/init.js +64 -0
  8. package/lib/commands/status.js +91 -0
  9. package/lib/index.js +28 -0
  10. package/package.json +52 -0
  11. package/proagents/.learning/global/common-patterns.json +77 -0
  12. package/proagents/.learning/global/user-preferences.json +76 -0
  13. package/proagents/.learning/projects/example-project/corrections.json +99 -0
  14. package/proagents/.learning/projects/example-project/feedback.json +109 -0
  15. package/proagents/.learning/projects/example-project/metrics.json +101 -0
  16. package/proagents/.learning/projects/example-project/patterns.json +102 -0
  17. package/proagents/.learning/schemas/README.md +48 -0
  18. package/proagents/.learning/schemas/corrections-schema.json +100 -0
  19. package/proagents/.learning/schemas/feedback-schema.json +144 -0
  20. package/proagents/.learning/schemas/metrics-schema.json +96 -0
  21. package/proagents/.learning/schemas/patterns-schema.json +82 -0
  22. package/proagents/.learning/schemas/project-patterns-schema.json +125 -0
  23. package/proagents/.learning/schemas/user-preferences-schema.json +136 -0
  24. package/proagents/GETTING-STARTED-STORY.md +708 -0
  25. package/proagents/README.md +99 -0
  26. package/proagents/WORKFLOW.md +1234 -0
  27. package/proagents/active-features/.gitkeep +0 -0
  28. package/proagents/active-features/README.md +176 -0
  29. package/proagents/active-features/_index.json +74 -0
  30. package/proagents/active-features/feature-user-auth/dependencies.json +81 -0
  31. package/proagents/active-features/feature-user-auth/files-modified.json +126 -0
  32. package/proagents/active-features/feature-user-auth/status.json +122 -0
  33. package/proagents/active-features/schemas/dependencies-schema.json +119 -0
  34. package/proagents/active-features/schemas/feature-schema.json +132 -0
  35. package/proagents/active-features/schemas/files-schema.json +100 -0
  36. package/proagents/active-features/schemas/index-schema.json +95 -0
  37. package/proagents/adr/README.md +302 -0
  38. package/proagents/adr/examples/api-versioning.md +297 -0
  39. package/proagents/adr/examples/database-choice.md +264 -0
  40. package/proagents/adr/template.md +273 -0
  41. package/proagents/ai-models/README.md +141 -0
  42. package/proagents/ai-models/cost-management.md +362 -0
  43. package/proagents/ai-models/fallbacks.md +342 -0
  44. package/proagents/ai-models/model-config.md +318 -0
  45. package/proagents/ai-models/task-routing.md +503 -0
  46. package/proagents/ai-training/README.md +155 -0
  47. package/proagents/ai-training/continuous-learning.md +413 -0
  48. package/proagents/ai-training/domain-knowledge.md +378 -0
  49. package/proagents/ai-training/pattern-learning.md +455 -0
  50. package/proagents/ai-training/training-data.md +337 -0
  51. package/proagents/ai-training/user-preferences.md +346 -0
  52. package/proagents/api-versioning/README.md +257 -0
  53. package/proagents/api-versioning/changelog-template.md +225 -0
  54. package/proagents/api-versioning/deprecation-workflow.md +470 -0
  55. package/proagents/api-versioning/versioning-strategy.md +291 -0
  56. package/proagents/approval-workflows/README.md +146 -0
  57. package/proagents/approval-workflows/approval-config.md +332 -0
  58. package/proagents/approval-workflows/approval-stages.md +503 -0
  59. package/proagents/approval-workflows/emergency-bypass.md +351 -0
  60. package/proagents/approval-workflows/examples.md +859 -0
  61. package/proagents/approval-workflows/notifications.md +320 -0
  62. package/proagents/automation/README.md +38 -0
  63. package/proagents/automation/ai-behavior-rules.md +339 -0
  64. package/proagents/automation/ai-prompt-injection.md +331 -0
  65. package/proagents/automation/auto-decisions.md +535 -0
  66. package/proagents/automation/decision-defaults.yaml +317 -0
  67. package/proagents/cache/README.md +110 -0
  68. package/proagents/cache/analysis-metadata.json +76 -0
  69. package/proagents/cache/conventions.json +125 -0
  70. package/proagents/cache/dependencies.json +85 -0
  71. package/proagents/cache/features.json +115 -0
  72. package/proagents/cache/patterns.json +105 -0
  73. package/proagents/cache/schemas/conventions-schema.json +138 -0
  74. package/proagents/cache/schemas/dependencies-schema.json +95 -0
  75. package/proagents/cache/schemas/features-schema.json +104 -0
  76. package/proagents/cache/schemas/metadata-schema.json +83 -0
  77. package/proagents/cache/schemas/patterns-schema.json +136 -0
  78. package/proagents/cache/schemas/structure-schema.json +72 -0
  79. package/proagents/cache/structure.json +109 -0
  80. package/proagents/changelog/2024/01/2024-01-10-api-url-config.md +41 -0
  81. package/proagents/changelog/2024/01/2024-01-12-login-bug-fix.md +69 -0
  82. package/proagents/changelog/2024/01/2024-01-15-user-auth-feature.md +99 -0
  83. package/proagents/changelog/CHANGELOG.md +82 -0
  84. package/proagents/changelog/README.md +327 -0
  85. package/proagents/changelog/entry-template.md +283 -0
  86. package/proagents/checklists/README.md +261 -0
  87. package/proagents/checklists/code-quality.md +137 -0
  88. package/proagents/checklists/code-review.md +148 -0
  89. package/proagents/checklists/pr-checklist.md +78 -0
  90. package/proagents/checklists/pre-deployment.md +132 -0
  91. package/proagents/checklists/pre-implementation.md +80 -0
  92. package/proagents/checklists/testing.md +120 -0
  93. package/proagents/cicd/README.md +338 -0
  94. package/proagents/cicd/azure-devops.md +267 -0
  95. package/proagents/cicd/github-actions.md +375 -0
  96. package/proagents/cicd/gitlab-ci.md +278 -0
  97. package/proagents/cicd/jenkins.md +317 -0
  98. package/proagents/cli/README.md +392 -0
  99. package/proagents/cli/commands-reference.md +893 -0
  100. package/proagents/cli/ide-integration.md +584 -0
  101. package/proagents/cli/shortcuts.md +394 -0
  102. package/proagents/cli/slash-commands.md +507 -0
  103. package/proagents/collaboration/README.md +143 -0
  104. package/proagents/collaboration/roles.md +248 -0
  105. package/proagents/collaboration/sessions.md +390 -0
  106. package/proagents/collaboration/sync.md +358 -0
  107. package/proagents/compliance/README.md +206 -0
  108. package/proagents/compliance/access-control.md +310 -0
  109. package/proagents/compliance/audit-logging.md +444 -0
  110. package/proagents/compliance/compliance-frameworks.md +429 -0
  111. package/proagents/compliance/reports.md +491 -0
  112. package/proagents/compliance/retention-policies.md +454 -0
  113. package/proagents/config/README.md +181 -0
  114. package/proagents/config/integrations/README.md +68 -0
  115. package/proagents/config/integrations/github.yaml +211 -0
  116. package/proagents/config/integrations/jira.yaml +144 -0
  117. package/proagents/config/integrations/linear.yaml +157 -0
  118. package/proagents/config/integrations/notion.yaml +203 -0
  119. package/proagents/config/integrations/slack.yaml +230 -0
  120. package/proagents/config/rules/README.md +73 -0
  121. package/proagents/config/rules/custom-rules.template.yaml +188 -0
  122. package/proagents/config/rules/validation-rules.template.yaml +177 -0
  123. package/proagents/config/standards/README.md +58 -0
  124. package/proagents/config/standards/architecture-rules.template.md +124 -0
  125. package/proagents/config/standards/coding-standards.template.md +107 -0
  126. package/proagents/config/standards/naming-conventions.template.md +114 -0
  127. package/proagents/config/standards/testing-standards.template.md +213 -0
  128. package/proagents/config/templates/README.md +74 -0
  129. package/proagents/config/templates/api-route.template.ts +142 -0
  130. package/proagents/config/templates/component.template.tsx +55 -0
  131. package/proagents/config/templates/hook.template.ts +93 -0
  132. package/proagents/config/templates/test.template.ts +171 -0
  133. package/proagents/config-versioning/README.md +120 -0
  134. package/proagents/config-versioning/changelog.md +300 -0
  135. package/proagents/config-versioning/rollback.md +283 -0
  136. package/proagents/config-versioning/versioning.md +330 -0
  137. package/proagents/contract-testing/README.md +223 -0
  138. package/proagents/contract-testing/contract-testing.md +614 -0
  139. package/proagents/contract-testing/pact-integration.md +507 -0
  140. package/proagents/contract-testing/schema-validation.md +565 -0
  141. package/proagents/cost/README.md +48 -0
  142. package/proagents/cost/cost-template.md +283 -0
  143. package/proagents/cost/estimation-framework.md +287 -0
  144. package/proagents/database/README.md +72 -0
  145. package/proagents/database/examples/001-create-users.sql +129 -0
  146. package/proagents/database/examples/002-add-preferences.sql +94 -0
  147. package/proagents/database/examples/003-add-index.sql +105 -0
  148. package/proagents/database/examples/004-rename-column.sql +122 -0
  149. package/proagents/database/examples/005-add-foreign-key.sql +142 -0
  150. package/proagents/database/examples/006-data-migration.sql +196 -0
  151. package/proagents/database/examples/007-drop-column.sql +163 -0
  152. package/proagents/database/examples/README.md +89 -0
  153. package/proagents/database/migration-workflow.md +478 -0
  154. package/proagents/database/rollback-scripts.md +487 -0
  155. package/proagents/database/safety-checks.md +447 -0
  156. package/proagents/dependency-management/README.md +140 -0
  157. package/proagents/dependency-management/automation.md +363 -0
  158. package/proagents/dependency-management/compatibility.md +319 -0
  159. package/proagents/dependency-management/security-scanning.md +413 -0
  160. package/proagents/dependency-management/update-policies.md +374 -0
  161. package/proagents/disaster-recovery/README.md +247 -0
  162. package/proagents/disaster-recovery/automation.md +366 -0
  163. package/proagents/disaster-recovery/backup-recovery.md +571 -0
  164. package/proagents/disaster-recovery/incident-response.md +565 -0
  165. package/proagents/disaster-recovery/rollback-procedures.md +499 -0
  166. package/proagents/disaster-recovery/runbooks.md +603 -0
  167. package/proagents/disaster-recovery/scenarios.md +892 -0
  168. package/proagents/disaster-recovery/testing.md +438 -0
  169. package/proagents/environments/README.md +244 -0
  170. package/proagents/environments/configuration.md +437 -0
  171. package/proagents/environments/promotion.md +434 -0
  172. package/proagents/environments/setup.md +420 -0
  173. package/proagents/examples/README.md +55 -0
  174. package/proagents/examples/backend-nodejs/README.md +188 -0
  175. package/proagents/examples/backend-nodejs/complete-conversation.md +601 -0
  176. package/proagents/examples/backend-nodejs/proagents.config.yaml +415 -0
  177. package/proagents/examples/backend-nodejs/workflow-example.md +909 -0
  178. package/proagents/examples/fullstack-nextjs/README.md +155 -0
  179. package/proagents/examples/fullstack-nextjs/complete-conversation.md +604 -0
  180. package/proagents/examples/fullstack-nextjs/proagents.config.yaml +287 -0
  181. package/proagents/examples/fullstack-nextjs/workflow-example.md +553 -0
  182. package/proagents/examples/mobile-react-native/README.md +171 -0
  183. package/proagents/examples/mobile-react-native/complete-conversation.md +825 -0
  184. package/proagents/examples/mobile-react-native/proagents.config.yaml +330 -0
  185. package/proagents/examples/mobile-react-native/workflow-example.md +723 -0
  186. package/proagents/examples/web-frontend-react/README.md +125 -0
  187. package/proagents/examples/web-frontend-react/complete-conversation.md +556 -0
  188. package/proagents/examples/web-frontend-react/proagents.config.yaml +183 -0
  189. package/proagents/examples/web-frontend-react/workflow-example.md +603 -0
  190. package/proagents/existing-projects/README.md +65 -0
  191. package/proagents/existing-projects/challenges.md +861 -0
  192. package/proagents/existing-projects/coexistence-mode.md +483 -0
  193. package/proagents/existing-projects/compatibility-assessment.md +541 -0
  194. package/proagents/existing-projects/gradual-adoption.md +515 -0
  195. package/proagents/existing-projects/migration-strategies.md +788 -0
  196. package/proagents/existing-projects/pattern-reconciliation.md +489 -0
  197. package/proagents/existing-projects/team-onboarding.md +617 -0
  198. package/proagents/existing-projects/technical-debt-handling.md +644 -0
  199. package/proagents/feature-flags/README.md +263 -0
  200. package/proagents/feature-flags/ab-testing.md +413 -0
  201. package/proagents/feature-flags/configuration.md +420 -0
  202. package/proagents/feature-flags/kill-switches.md +444 -0
  203. package/proagents/feature-flags/rollout-strategies.md +392 -0
  204. package/proagents/getting-started/README.md +60 -0
  205. package/proagents/getting-started/ai-training-setup.md +380 -0
  206. package/proagents/getting-started/ide-setup.md +195 -0
  207. package/proagents/getting-started/mcp-setup.md +239 -0
  208. package/proagents/getting-started/pm-integration.md +336 -0
  209. package/proagents/getting-started/prompt-engineering.md +478 -0
  210. package/proagents/getting-started/team-onboarding.md +236 -0
  211. package/proagents/git/README.md +68 -0
  212. package/proagents/git/branch-strategy.md +164 -0
  213. package/proagents/git/commit-conventions.md +241 -0
  214. package/proagents/git/pr-workflow.md +286 -0
  215. package/proagents/git/rollback-procedures.md +416 -0
  216. package/proagents/i18n/README.md +133 -0
  217. package/proagents/i18n/extraction.md +433 -0
  218. package/proagents/i18n/tms-integration.md +332 -0
  219. package/proagents/i18n/translation-workflow.md +413 -0
  220. package/proagents/i18n/validation.md +355 -0
  221. package/proagents/ide-integration/README.md +124 -0
  222. package/proagents/ide-integration/cline-config.md +429 -0
  223. package/proagents/ide-integration/continue-config.md +380 -0
  224. package/proagents/ide-integration/cursor-rules.md +280 -0
  225. package/proagents/ide-integration/github-copilot.md +384 -0
  226. package/proagents/ide-integration/windsurf-rules.md +314 -0
  227. package/proagents/integrations/README.md +97 -0
  228. package/proagents/integrations/pm/README.md +344 -0
  229. package/proagents/learning/README.md +136 -0
  230. package/proagents/learning/adaptation.md +305 -0
  231. package/proagents/learning/data-collection.md +283 -0
  232. package/proagents/learning/implementation-guide.md +865 -0
  233. package/proagents/learning/reports.md +306 -0
  234. package/proagents/logging/README.md +276 -0
  235. package/proagents/logging/aggregation.md +475 -0
  236. package/proagents/logging/log-levels.md +376 -0
  237. package/proagents/logging/sensitive-data.md +423 -0
  238. package/proagents/logging/structured-logging.md +406 -0
  239. package/proagents/mcp/README.md +133 -0
  240. package/proagents/mcp/context-providers.md +442 -0
  241. package/proagents/mcp/server-config.md +306 -0
  242. package/proagents/mcp/tools-definition.md +513 -0
  243. package/proagents/metrics/README.md +174 -0
  244. package/proagents/metrics/code-quality-kpis.md +461 -0
  245. package/proagents/metrics/deployment-metrics.md +517 -0
  246. package/proagents/metrics/developer-productivity.md +368 -0
  247. package/proagents/metrics/learning-effectiveness.md +478 -0
  248. package/proagents/migrations/README.md +77 -0
  249. package/proagents/migrations/from-claude-projects.md +312 -0
  250. package/proagents/migrations/from-cursor-rules.md +345 -0
  251. package/proagents/migrations/from-custom-workflows.md +410 -0
  252. package/proagents/monitoring/README.md +308 -0
  253. package/proagents/monitoring/alerting.md +449 -0
  254. package/proagents/monitoring/dashboards.md +454 -0
  255. package/proagents/monitoring/health-checks.md +436 -0
  256. package/proagents/monitoring/metrics.md +434 -0
  257. package/proagents/multi-project/README.md +170 -0
  258. package/proagents/multi-project/coordinated-deploy.md +510 -0
  259. package/proagents/multi-project/cross-project-deps.md +395 -0
  260. package/proagents/multi-project/unified-changelog.md +477 -0
  261. package/proagents/multi-project/walkthroughs/monorepo-setup.md +787 -0
  262. package/proagents/multi-project/workspace-config.md +408 -0
  263. package/proagents/notifications/README.md +151 -0
  264. package/proagents/notifications/channels.md +457 -0
  265. package/proagents/notifications/preferences.md +415 -0
  266. package/proagents/notifications/routing.md +449 -0
  267. package/proagents/notifications/scheduling.md +425 -0
  268. package/proagents/notifications/templates.md +446 -0
  269. package/proagents/offline-mode/README.md +145 -0
  270. package/proagents/offline-mode/caching.md +344 -0
  271. package/proagents/offline-mode/offline-operations.md +312 -0
  272. package/proagents/offline-mode/queue-specifications.md +679 -0
  273. package/proagents/offline-mode/sync.md +475 -0
  274. package/proagents/parallel-features/README.md +85 -0
  275. package/proagents/parallel-features/conflict-detection.md +226 -0
  276. package/proagents/parallel-features/dependency-management.md +392 -0
  277. package/proagents/parallel-features/merge-coordination.md +506 -0
  278. package/proagents/parallel-features/tracking-system.md +416 -0
  279. package/proagents/patterns/README.md +305 -0
  280. package/proagents/patterns/api-errors.md +453 -0
  281. package/proagents/patterns/async-errors.md +521 -0
  282. package/proagents/patterns/error-types.md +437 -0
  283. package/proagents/patterns/ui-errors.md +595 -0
  284. package/proagents/performance/README.md +59 -0
  285. package/proagents/performance/bundle-analysis.md +375 -0
  286. package/proagents/performance/load-testing.md +563 -0
  287. package/proagents/performance/runtime-metrics.md +489 -0
  288. package/proagents/performance/web-vitals.md +425 -0
  289. package/proagents/plugins/README.md +139 -0
  290. package/proagents/plugins/creating-plugins.md +504 -0
  291. package/proagents/plugins/plugin-api.md +467 -0
  292. package/proagents/plugins/plugin-registry.md +276 -0
  293. package/proagents/pm-integration/README.md +151 -0
  294. package/proagents/pm-integration/asana.md +346 -0
  295. package/proagents/pm-integration/github-issues.md +308 -0
  296. package/proagents/pm-integration/gitlab-issues.md +482 -0
  297. package/proagents/pm-integration/jira.md +364 -0
  298. package/proagents/pm-integration/linear.md +409 -0
  299. package/proagents/pm-integration/notion.md +275 -0
  300. package/proagents/pm-integration/sync-config.md +533 -0
  301. package/proagents/pm-integration/trello.md +159 -0
  302. package/proagents/proagents.config.yaml +213 -0
  303. package/proagents/prompts/00-init-wizard.md +426 -0
  304. package/proagents/prompts/00-init.md +219 -0
  305. package/proagents/prompts/01-analysis.md +244 -0
  306. package/proagents/prompts/02-requirements.md +399 -0
  307. package/proagents/prompts/03-ui-design.md +493 -0
  308. package/proagents/prompts/04-planning.md +505 -0
  309. package/proagents/prompts/05-implementation.md +518 -0
  310. package/proagents/prompts/06-testing.md +620 -0
  311. package/proagents/prompts/06.5-code-review.md +512 -0
  312. package/proagents/prompts/07-documentation.md +673 -0
  313. package/proagents/prompts/08-deployment.md +539 -0
  314. package/proagents/prompts/09-rollback.md +554 -0
  315. package/proagents/prompts/README.md +51 -0
  316. package/proagents/prompts/accessibility/README.md +146 -0
  317. package/proagents/prompts/accessibility/aria.md +276 -0
  318. package/proagents/prompts/accessibility/audit.md +233 -0
  319. package/proagents/prompts/accessibility/keyboard.md +392 -0
  320. package/proagents/prompts/accessibility/wcag.md +189 -0
  321. package/proagents/prompts/debugging/README.md +51 -0
  322. package/proagents/prompts/debugging/error-analysis.md +385 -0
  323. package/proagents/prompts/debugging/performance-debug.md +381 -0
  324. package/proagents/prompts/debugging/systematic.md +270 -0
  325. package/proagents/prompts/performance/README.md +47 -0
  326. package/proagents/prompts/performance/analyze.md +265 -0
  327. package/proagents/prompts/performance/optimize.md +347 -0
  328. package/proagents/prompts/refactoring/README.md +51 -0
  329. package/proagents/prompts/refactoring/architecture.md +531 -0
  330. package/proagents/prompts/refactoring/code-smells.md +174 -0
  331. package/proagents/prompts/refactoring/patterns.md +516 -0
  332. package/proagents/prompts/security-audit/README.md +197 -0
  333. package/proagents/prompts/security-audit/code-review.md +260 -0
  334. package/proagents/prompts/security-audit/vulnerability-scan.md +288 -0
  335. package/proagents/reporting/README.md +158 -0
  336. package/proagents/reporting/dashboards.md +366 -0
  337. package/proagents/reporting/exports.md +524 -0
  338. package/proagents/reporting/quality-metrics.md +385 -0
  339. package/proagents/reporting/templates/README.md +56 -0
  340. package/proagents/reporting/templates/dashboard-config.json +187 -0
  341. package/proagents/reporting/templates/metrics-queries.md +427 -0
  342. package/proagents/reporting/templates/react-dashboard.tsx +544 -0
  343. package/proagents/reporting/templates/widgets.md +451 -0
  344. package/proagents/reporting/velocity-metrics.md +340 -0
  345. package/proagents/reverse-engineering/README.md +151 -0
  346. package/proagents/reverse-engineering/architecture-extraction.md +325 -0
  347. package/proagents/reverse-engineering/code-analysis.md +377 -0
  348. package/proagents/reverse-engineering/dependency-mapping.md +567 -0
  349. package/proagents/reverse-engineering/diagram-generation.md +586 -0
  350. package/proagents/reverse-engineering/documentation-generation.md +468 -0
  351. package/proagents/reverse-engineering/pattern-detection.md +569 -0
  352. package/proagents/reverse-engineering/quality-assessment.md +733 -0
  353. package/proagents/rules/README.md +179 -0
  354. package/proagents/rules/custom-rules-template.yaml +286 -0
  355. package/proagents/rules/custom-rules.md +754 -0
  356. package/proagents/rules/validation-rules-template.yaml +517 -0
  357. package/proagents/runbooks/README.md +219 -0
  358. package/proagents/runbooks/dependency-vulnerability.md +505 -0
  359. package/proagents/runbooks/incident-response.md +451 -0
  360. package/proagents/runbooks/performance-degradation.md +584 -0
  361. package/proagents/runbooks/production-debugging.md +489 -0
  362. package/proagents/scaffolding/README.md +64 -0
  363. package/proagents/scaffolding/nextjs/README.md +578 -0
  364. package/proagents/scaffolding/nextjs/templates/api-route.ts.template +185 -0
  365. package/proagents/scaffolding/nextjs/templates/page.tsx.template +109 -0
  366. package/proagents/scaffolding/nextjs/templates/server-action.ts.template +204 -0
  367. package/proagents/scaffolding/nodejs/README.md +558 -0
  368. package/proagents/scaffolding/nodejs/templates/controller.ts.template +167 -0
  369. package/proagents/scaffolding/nodejs/templates/repository.ts.template +155 -0
  370. package/proagents/scaffolding/nodejs/templates/service.ts.template +207 -0
  371. package/proagents/scaffolding/project-types.md +401 -0
  372. package/proagents/scaffolding/react/README.md +399 -0
  373. package/proagents/scaffolding/react/templates/component.tsx.template +88 -0
  374. package/proagents/scaffolding/react/templates/hook.ts.template +127 -0
  375. package/proagents/scaffolding/react/templates/service.ts.template +155 -0
  376. package/proagents/scaffolding/react/templates/test.tsx.template +149 -0
  377. package/proagents/scaffolding/react-native/README.md +476 -0
  378. package/proagents/scaffolding/react-native/templates/hook.ts.template +226 -0
  379. package/proagents/scaffolding/react-native/templates/screen.tsx.template +247 -0
  380. package/proagents/secrets/README.md +278 -0
  381. package/proagents/secrets/access-control.md +443 -0
  382. package/proagents/secrets/rotation.md +403 -0
  383. package/proagents/secrets/scanning.md +487 -0
  384. package/proagents/secrets/storage.md +394 -0
  385. package/proagents/security/README.md +71 -0
  386. package/proagents/security/owasp-checklist.md +390 -0
  387. package/proagents/security/sast-guide.md +473 -0
  388. package/proagents/security/security-report-template.md +343 -0
  389. package/proagents/security/vulnerability-scanning.md +329 -0
  390. package/proagents/slash-commands.json +161 -0
  391. package/proagents/standards/README.md +120 -0
  392. package/proagents/standards/architecture-patterns.md +728 -0
  393. package/proagents/standards/architecture-rules-template.md +489 -0
  394. package/proagents/standards/coding-standards-template.md +489 -0
  395. package/proagents/standards/examples/README.md +61 -0
  396. package/proagents/standards/examples/nodejs-api.md +560 -0
  397. package/proagents/standards/examples/react-nextjs.md +428 -0
  398. package/proagents/standards/naming-conventions-template.md +526 -0
  399. package/proagents/standards/override-system.md +717 -0
  400. package/proagents/standards/testing-standards-template.md +220 -0
  401. package/proagents/team/README.md +256 -0
  402. package/proagents/team/code-ownership.md +306 -0
  403. package/proagents/team/communication-templates.md +441 -0
  404. package/proagents/team/handoff-protocol.md +380 -0
  405. package/proagents/team/ide-setup/README.md +103 -0
  406. package/proagents/team/ide-setup/cursor.md +276 -0
  407. package/proagents/team/ide-setup/jetbrains.md +330 -0
  408. package/proagents/team/ide-setup/neovim.md +640 -0
  409. package/proagents/team/ide-setup/vscode.md +348 -0
  410. package/proagents/team/onboarding.md +278 -0
  411. package/proagents/templates/README.md +57 -0
  412. package/proagents/templates/code-review-report.md +255 -0
  413. package/proagents/templates/codebase-analysis-report.md +315 -0
  414. package/proagents/templates/deployment-checklist.md +277 -0
  415. package/proagents/templates/feature-requirements.md +142 -0
  416. package/proagents/templates/feature-status.md +231 -0
  417. package/proagents/templates/implementation-plan.md +373 -0
  418. package/proagents/templates/rollback-plan.md +331 -0
  419. package/proagents/templates/test-plan.md +336 -0
  420. package/proagents/templates/ui-specification.md +431 -0
  421. package/proagents/testing-standards/README.md +229 -0
  422. package/proagents/testing-standards/coverage-requirements.md +198 -0
  423. package/proagents/testing-standards/mocking-guidelines.md +478 -0
  424. package/proagents/testing-standards/test-naming.md +485 -0
  425. package/proagents/testing-standards/test-patterns.md +488 -0
  426. package/proagents/troubleshooting/README.md +730 -0
  427. package/proagents/troubleshooting/ai-issues.md +601 -0
  428. package/proagents/troubleshooting/workflow-issues.md +571 -0
  429. package/proagents/ui-integration/README.md +77 -0
  430. package/proagents/ui-integration/figma-guide.md +217 -0
  431. package/proagents/ui-integration/manual-export-guide.md +358 -0
  432. package/proagents/ui-integration/sketch-interpretation.md +471 -0
  433. package/proagents/webhooks/README.md +126 -0
  434. package/proagents/webhooks/endpoints.md +298 -0
  435. package/proagents/webhooks/events.md +316 -0
  436. package/proagents/webhooks/payloads.md +325 -0
  437. package/proagents/webhooks/reliability.md +363 -0
  438. package/proagents/webhooks/security.md +380 -0
  439. package/proagents/workflow-modes/README.md +136 -0
  440. package/proagents/workflow-modes/deferred-tracking.md +405 -0
  441. package/proagents/workflow-modes/entry-modes.md +397 -0
  442. package/proagents/workflow-modes/guardrails.md +405 -0
  443. package/proagents/workflow-modes/mode-detection.md +358 -0
  444. package/proagents/workflow-modes/mode-switching.md +372 -0
@@ -0,0 +1,865 @@
1
+ # Learning System Implementation Guide
2
+
3
+ Technical guide for implementing and customizing the ProAgents learning system.
4
+
5
+ ---
6
+
7
+ ## Architecture Overview
8
+
9
+ ```
10
+ ┌─────────────────────────────────────────────────────────────────┐
11
+ │ Learning System Architecture │
12
+ ├─────────────────────────────────────────────────────────────────┤
13
+ │ │
14
+ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
15
+ │ │ Events │───▶│ Collector │───▶│ Storage │ │
16
+ │ └─────────────┘ └─────────────┘ └─────────────┘ │
17
+ │ │ │ │
18
+ │ │ │ │
19
+ │ ▼ ▼ │
20
+ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
21
+ │ │ Analysis │◀───│ Adapter │◀───│ Loader │ │
22
+ │ └─────────────┘ └─────────────┘ └─────────────┘ │
23
+ │ │ │
24
+ │ │ │
25
+ │ ▼ │
26
+ │ ┌─────────────────────────────────────────────────────┐ │
27
+ │ │ Applied to AI Interactions │ │
28
+ │ └─────────────────────────────────────────────────────┘ │
29
+ │ │
30
+ └─────────────────────────────────────────────────────────────────┘
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Core Components
36
+
37
+ ### 1. Event Collector
38
+
39
+ Captures learning events from user interactions.
40
+
41
+ ```typescript
42
+ // learning/collector.ts
43
+
44
+ interface LearningEvent {
45
+ type: EventType;
46
+ timestamp: string;
47
+ sessionId: string;
48
+ data: Record<string, unknown>;
49
+ }
50
+
51
+ type EventType =
52
+ | 'checkpoint_skipped'
53
+ | 'checkpoint_reviewed'
54
+ | 'output_modified'
55
+ | 'correction_made'
56
+ | 'feature_completed'
57
+ | 'phase_duration'
58
+ | 'explicit_feedback';
59
+
60
+ class LearningCollector {
61
+ private events: LearningEvent[] = [];
62
+ private sessionId: string;
63
+ private flushInterval: NodeJS.Timer;
64
+
65
+ constructor(sessionId: string) {
66
+ this.sessionId = sessionId;
67
+ // Flush events every 30 seconds
68
+ this.flushInterval = setInterval(() => this.flush(), 30000);
69
+ }
70
+
71
+ track(type: EventType, data: Record<string, unknown>): void {
72
+ this.events.push({
73
+ type,
74
+ timestamp: new Date().toISOString(),
75
+ sessionId: this.sessionId,
76
+ data,
77
+ });
78
+
79
+ // Flush if buffer is large
80
+ if (this.events.length >= 50) {
81
+ this.flush();
82
+ }
83
+ }
84
+
85
+ async flush(): Promise<void> {
86
+ if (this.events.length === 0) return;
87
+
88
+ const eventsToFlush = [...this.events];
89
+ this.events = [];
90
+
91
+ await learningStorage.appendEvents(eventsToFlush);
92
+ }
93
+
94
+ destroy(): void {
95
+ clearInterval(this.flushInterval);
96
+ this.flush();
97
+ }
98
+ }
99
+
100
+ // Singleton instance
101
+ export const collector = new LearningCollector(generateSessionId());
102
+ ```
103
+
104
+ ### 2. Learning Storage
105
+
106
+ Persists learned data to the file system.
107
+
108
+ ```typescript
109
+ // learning/storage.ts
110
+
111
+ import * as fs from 'fs/promises';
112
+ import * as path from 'path';
113
+
114
+ interface StorageConfig {
115
+ basePath: string;
116
+ projectHash: string;
117
+ }
118
+
119
+ class LearningStorage {
120
+ private basePath: string;
121
+ private projectHash: string;
122
+
123
+ constructor(config: StorageConfig) {
124
+ this.basePath = config.basePath;
125
+ this.projectHash = config.projectHash;
126
+ }
127
+
128
+ private get globalPath(): string {
129
+ return path.join(this.basePath, '.learning', 'global');
130
+ }
131
+
132
+ private get projectPath(): string {
133
+ return path.join(
134
+ this.basePath,
135
+ '.learning',
136
+ 'projects',
137
+ this.projectHash
138
+ );
139
+ }
140
+
141
+ async initialize(): Promise<void> {
142
+ await fs.mkdir(this.globalPath, { recursive: true });
143
+ await fs.mkdir(this.projectPath, { recursive: true });
144
+ }
145
+
146
+ // Preferences (global)
147
+ async loadPreferences(): Promise<UserPreferences> {
148
+ const filePath = path.join(this.globalPath, 'preferences.json');
149
+ try {
150
+ const content = await fs.readFile(filePath, 'utf-8');
151
+ return JSON.parse(content);
152
+ } catch {
153
+ return getDefaultPreferences();
154
+ }
155
+ }
156
+
157
+ async savePreferences(prefs: UserPreferences): Promise<void> {
158
+ const filePath = path.join(this.globalPath, 'preferences.json');
159
+ await fs.writeFile(filePath, JSON.stringify(prefs, null, 2));
160
+ }
161
+
162
+ // Patterns (project-specific)
163
+ async loadPatterns(): Promise<ProjectPatterns> {
164
+ const filePath = path.join(this.projectPath, 'patterns.json');
165
+ try {
166
+ const content = await fs.readFile(filePath, 'utf-8');
167
+ return JSON.parse(content);
168
+ } catch {
169
+ return getDefaultPatterns();
170
+ }
171
+ }
172
+
173
+ async savePatterns(patterns: ProjectPatterns): Promise<void> {
174
+ const filePath = path.join(this.projectPath, 'patterns.json');
175
+ await fs.writeFile(filePath, JSON.stringify(patterns, null, 2));
176
+ }
177
+
178
+ // Corrections (project-specific)
179
+ async loadCorrections(): Promise<Correction[]> {
180
+ const filePath = path.join(this.projectPath, 'corrections.json');
181
+ try {
182
+ const content = await fs.readFile(filePath, 'utf-8');
183
+ return JSON.parse(content);
184
+ } catch {
185
+ return [];
186
+ }
187
+ }
188
+
189
+ async appendCorrection(correction: Correction): Promise<void> {
190
+ const corrections = await this.loadCorrections();
191
+ corrections.push(correction);
192
+ const filePath = path.join(this.projectPath, 'corrections.json');
193
+ await fs.writeFile(filePath, JSON.stringify(corrections, null, 2));
194
+ }
195
+
196
+ // Events (raw data for analysis)
197
+ async appendEvents(events: LearningEvent[]): Promise<void> {
198
+ const filePath = path.join(this.projectPath, 'events.jsonl');
199
+ const lines = events.map((e) => JSON.stringify(e)).join('\n') + '\n';
200
+ await fs.appendFile(filePath, lines);
201
+ }
202
+ }
203
+
204
+ export const learningStorage = new LearningStorage({
205
+ basePath: process.env.PROAGENTS_PATH || process.cwd(),
206
+ projectHash: getProjectHash(),
207
+ });
208
+ ```
209
+
210
+ ### 3. Pattern Analyzer
211
+
212
+ Extracts patterns from collected events.
213
+
214
+ ```typescript
215
+ // learning/analyzer.ts
216
+
217
+ interface PatternAnalysis {
218
+ codePatterns: CodePattern[];
219
+ checkpointPreferences: CheckpointPreference[];
220
+ corrections: CorrectionPattern[];
221
+ metrics: PhaseMetrics;
222
+ }
223
+
224
+ class PatternAnalyzer {
225
+ async analyze(events: LearningEvent[]): Promise<PatternAnalysis> {
226
+ return {
227
+ codePatterns: this.extractCodePatterns(events),
228
+ checkpointPreferences: this.extractCheckpointPreferences(events),
229
+ corrections: this.extractCorrectionPatterns(events),
230
+ metrics: this.calculateMetrics(events),
231
+ };
232
+ }
233
+
234
+ private extractCodePatterns(events: LearningEvent[]): CodePattern[] {
235
+ const patterns: CodePattern[] = [];
236
+
237
+ // Group modifications by category
238
+ const modifications = events
239
+ .filter((e) => e.type === 'output_modified')
240
+ .map((e) => e.data as OutputModification);
241
+
242
+ // Naming convention patterns
243
+ const namingChanges = modifications.filter((m) =>
244
+ m.category === 'naming'
245
+ );
246
+ if (namingChanges.length >= 3) {
247
+ const commonPattern = findCommonPattern(namingChanges);
248
+ if (commonPattern) {
249
+ patterns.push({
250
+ type: 'naming',
251
+ pattern: commonPattern,
252
+ confidence: namingChanges.length / modifications.length,
253
+ examples: namingChanges.slice(0, 3),
254
+ });
255
+ }
256
+ }
257
+
258
+ // Import ordering patterns
259
+ const importChanges = modifications.filter((m) =>
260
+ m.category === 'imports'
261
+ );
262
+ if (importChanges.length >= 3) {
263
+ patterns.push({
264
+ type: 'imports',
265
+ pattern: extractImportOrder(importChanges),
266
+ confidence: 0.8,
267
+ examples: importChanges.slice(0, 3),
268
+ });
269
+ }
270
+
271
+ return patterns;
272
+ }
273
+
274
+ private extractCheckpointPreferences(
275
+ events: LearningEvent[]
276
+ ): CheckpointPreference[] {
277
+ const preferences: CheckpointPreference[] = [];
278
+
279
+ const checkpointEvents = events.filter(
280
+ (e) =>
281
+ e.type === 'checkpoint_skipped' ||
282
+ e.type === 'checkpoint_reviewed'
283
+ );
284
+
285
+ // Group by checkpoint name
286
+ const grouped = groupBy(checkpointEvents, (e) =>
287
+ e.data.checkpoint as string
288
+ );
289
+
290
+ for (const [checkpoint, events] of Object.entries(grouped)) {
291
+ const skipped = events.filter(
292
+ (e) => e.type === 'checkpoint_skipped'
293
+ ).length;
294
+ const reviewed = events.filter(
295
+ (e) => e.type === 'checkpoint_reviewed'
296
+ ).length;
297
+ const total = skipped + reviewed;
298
+
299
+ if (total >= 3) {
300
+ preferences.push({
301
+ checkpoint,
302
+ skipRate: skipped / total,
303
+ sampleSize: total,
304
+ recommendation:
305
+ skipped / total > 0.8
306
+ ? 'auto_skip'
307
+ : skipped / total < 0.2
308
+ ? 'always_review'
309
+ : 'ask',
310
+ });
311
+ }
312
+ }
313
+
314
+ return preferences;
315
+ }
316
+
317
+ private extractCorrectionPatterns(
318
+ events: LearningEvent[]
319
+ ): CorrectionPattern[] {
320
+ const corrections = events
321
+ .filter((e) => e.type === 'correction_made')
322
+ .map((e) => e.data as Correction);
323
+
324
+ // Group similar corrections
325
+ const grouped = groupSimilarCorrections(corrections);
326
+
327
+ return grouped
328
+ .filter((g) => g.count >= 3) // Only patterns seen 3+ times
329
+ .map((g) => ({
330
+ originalPattern: g.pattern,
331
+ correctedPattern: g.correction,
332
+ count: g.count,
333
+ autoApply: g.count >= 5, // Auto-apply after 5 occurrences
334
+ }));
335
+ }
336
+
337
+ private calculateMetrics(events: LearningEvent[]): PhaseMetrics {
338
+ const durations = events
339
+ .filter((e) => e.type === 'phase_duration')
340
+ .map((e) => e.data as PhaseDuration);
341
+
342
+ const byPhase = groupBy(durations, (d) => d.phase);
343
+ const metrics: PhaseMetrics = {};
344
+
345
+ for (const [phase, phaseDurations] of Object.entries(byPhase)) {
346
+ const times = phaseDurations.map((d) => d.durationMs);
347
+ metrics[phase] = {
348
+ average: average(times),
349
+ median: median(times),
350
+ min: Math.min(...times),
351
+ max: Math.max(...times),
352
+ sampleSize: times.length,
353
+ };
354
+ }
355
+
356
+ return metrics;
357
+ }
358
+ }
359
+
360
+ export const analyzer = new PatternAnalyzer();
361
+ ```
362
+
363
+ ### 4. Learning Adapter
364
+
365
+ Applies learned patterns to AI interactions.
366
+
367
+ ```typescript
368
+ // learning/adapter.ts
369
+
370
+ interface AdaptedContext {
371
+ skipCheckpoints: string[];
372
+ autoCorrections: CorrectionPattern[];
373
+ suggestedPatterns: CodePattern[];
374
+ projectInsights: string[];
375
+ }
376
+
377
+ class LearningAdapter {
378
+ private storage: LearningStorage;
379
+ private cachedContext: AdaptedContext | null = null;
380
+
381
+ constructor(storage: LearningStorage) {
382
+ this.storage = storage;
383
+ }
384
+
385
+ async getAdaptedContext(): Promise<AdaptedContext> {
386
+ if (this.cachedContext) {
387
+ return this.cachedContext;
388
+ }
389
+
390
+ const [preferences, patterns, corrections] = await Promise.all([
391
+ this.storage.loadPreferences(),
392
+ this.storage.loadPatterns(),
393
+ this.storage.loadCorrections(),
394
+ ]);
395
+
396
+ this.cachedContext = {
397
+ skipCheckpoints: this.determineSkipCheckpoints(preferences),
398
+ autoCorrections: this.getAutoCorrections(corrections),
399
+ suggestedPatterns: this.getSuggestedPatterns(patterns),
400
+ projectInsights: this.generateInsights(patterns),
401
+ };
402
+
403
+ return this.cachedContext;
404
+ }
405
+
406
+ private determineSkipCheckpoints(prefs: UserPreferences): string[] {
407
+ return Object.entries(prefs.checkpoints)
408
+ .filter(([_, pref]) => pref.skipRate > 0.8 && pref.sampleSize >= 5)
409
+ .map(([checkpoint]) => checkpoint);
410
+ }
411
+
412
+ private getAutoCorrections(corrections: Correction[]): CorrectionPattern[] {
413
+ // Group similar corrections and return those with 5+ occurrences
414
+ const grouped = groupSimilarCorrections(corrections);
415
+ return grouped
416
+ .filter((g) => g.count >= 5)
417
+ .map((g) => ({
418
+ originalPattern: g.pattern,
419
+ correctedPattern: g.correction,
420
+ count: g.count,
421
+ autoApply: true,
422
+ }));
423
+ }
424
+
425
+ private getSuggestedPatterns(patterns: ProjectPatterns): CodePattern[] {
426
+ return patterns.codePatterns.filter((p) => p.confidence >= 0.8);
427
+ }
428
+
429
+ private generateInsights(patterns: ProjectPatterns): string[] {
430
+ const insights: string[] = [];
431
+
432
+ // Naming convention insight
433
+ const namingPattern = patterns.codePatterns.find(
434
+ (p) => p.type === 'naming'
435
+ );
436
+ if (namingPattern) {
437
+ insights.push(
438
+ `Use ${namingPattern.pattern} for ${namingPattern.appliesTo}`
439
+ );
440
+ }
441
+
442
+ // State management insight
443
+ if (patterns.stateManagement) {
444
+ insights.push(
445
+ `Use ${patterns.stateManagement} for state management`
446
+ );
447
+ }
448
+
449
+ // API patterns
450
+ if (patterns.apiPatterns) {
451
+ insights.push(`Follow ${patterns.apiPatterns} for API calls`);
452
+ }
453
+
454
+ return insights;
455
+ }
456
+
457
+ invalidateCache(): void {
458
+ this.cachedContext = null;
459
+ }
460
+ }
461
+
462
+ export const adapter = new LearningAdapter(learningStorage);
463
+ ```
464
+
465
+ ---
466
+
467
+ ## Integration Points
468
+
469
+ ### 1. Checkpoint System Integration
470
+
471
+ ```typescript
472
+ // workflow/checkpoint.ts
473
+
474
+ import { adapter } from '../learning/adapter';
475
+
476
+ async function shouldShowCheckpoint(
477
+ checkpointName: string
478
+ ): Promise<boolean> {
479
+ const context = await adapter.getAdaptedContext();
480
+
481
+ // Skip if in auto-skip list
482
+ if (context.skipCheckpoints.includes(checkpointName)) {
483
+ console.log(`[Learning] Auto-skipping checkpoint: ${checkpointName}`);
484
+ return false;
485
+ }
486
+
487
+ return true;
488
+ }
489
+
490
+ async function recordCheckpointDecision(
491
+ checkpointName: string,
492
+ skipped: boolean
493
+ ): Promise<void> {
494
+ collector.track(
495
+ skipped ? 'checkpoint_skipped' : 'checkpoint_reviewed',
496
+ { checkpoint: checkpointName }
497
+ );
498
+ }
499
+ ```
500
+
501
+ ### 2. Code Generation Integration
502
+
503
+ ```typescript
504
+ // workflow/codegen.ts
505
+
506
+ import { adapter } from '../learning/adapter';
507
+
508
+ async function generateCode(request: CodeRequest): Promise<string> {
509
+ const context = await adapter.getAdaptedContext();
510
+
511
+ // Build enhanced prompt with learned patterns
512
+ const enhancedPrompt = buildPrompt(request, {
513
+ patterns: context.suggestedPatterns,
514
+ insights: context.projectInsights,
515
+ });
516
+
517
+ let code = await aiGenerate(enhancedPrompt);
518
+
519
+ // Apply auto-corrections
520
+ for (const correction of context.autoCorrections) {
521
+ code = applyCorrection(code, correction);
522
+ }
523
+
524
+ return code;
525
+ }
526
+
527
+ function buildPrompt(
528
+ request: CodeRequest,
529
+ context: { patterns: CodePattern[]; insights: string[] }
530
+ ): string {
531
+ let prompt = request.basePrompt;
532
+
533
+ if (context.patterns.length > 0) {
534
+ prompt += '\n\nFollow these project patterns:\n';
535
+ for (const pattern of context.patterns) {
536
+ prompt += `- ${pattern.type}: ${pattern.pattern}\n`;
537
+ }
538
+ }
539
+
540
+ if (context.insights.length > 0) {
541
+ prompt += '\n\nProject conventions:\n';
542
+ for (const insight of context.insights) {
543
+ prompt += `- ${insight}\n`;
544
+ }
545
+ }
546
+
547
+ return prompt;
548
+ }
549
+ ```
550
+
551
+ ### 3. Output Modification Tracking
552
+
553
+ ```typescript
554
+ // workflow/review.ts
555
+
556
+ import { collector } from '../learning/collector';
557
+
558
+ function trackModification(
559
+ original: string,
560
+ modified: string,
561
+ category: string
562
+ ): void {
563
+ if (original === modified) return;
564
+
565
+ collector.track('output_modified', {
566
+ category,
567
+ original: original.slice(0, 200), // Truncate for privacy
568
+ modified: modified.slice(0, 200),
569
+ diff: generateDiff(original, modified),
570
+ });
571
+ }
572
+
573
+ // Called when user edits AI-generated code
574
+ function onCodeEdited(
575
+ originalCode: string,
576
+ editedCode: string,
577
+ filePath: string
578
+ ): void {
579
+ const changes = detectChanges(originalCode, editedCode);
580
+
581
+ for (const change of changes) {
582
+ if (change.type === 'naming') {
583
+ trackModification(change.original, change.modified, 'naming');
584
+ } else if (change.type === 'formatting') {
585
+ trackModification(change.original, change.modified, 'formatting');
586
+ } else if (change.type === 'structure') {
587
+ trackModification(change.original, change.modified, 'structure');
588
+ }
589
+ }
590
+ }
591
+ ```
592
+
593
+ ---
594
+
595
+ ## Data Schemas
596
+
597
+ ### User Preferences Schema
598
+
599
+ ```typescript
600
+ interface UserPreferences {
601
+ version: string;
602
+ checkpoints: Record<
603
+ string,
604
+ {
605
+ skipRate: number;
606
+ sampleSize: number;
607
+ lastUpdated: string;
608
+ }
609
+ >;
610
+ detailLevel: 'minimal' | 'moderate' | 'detailed';
611
+ commonCorrections: Array<{
612
+ pattern: string;
613
+ correction: string;
614
+ count: number;
615
+ }>;
616
+ }
617
+ ```
618
+
619
+ ### Project Patterns Schema
620
+
621
+ ```typescript
622
+ interface ProjectPatterns {
623
+ version: string;
624
+ projectHash: string;
625
+ analyzedAt: string;
626
+
627
+ codePatterns: CodePattern[];
628
+ stateManagement?: string;
629
+ apiPatterns?: string;
630
+ testingPatterns?: string;
631
+
632
+ conventions: {
633
+ naming: Record<string, string>;
634
+ imports: string[];
635
+ formatting: Record<string, unknown>;
636
+ };
637
+ }
638
+
639
+ interface CodePattern {
640
+ type: 'naming' | 'imports' | 'structure' | 'style';
641
+ pattern: string;
642
+ appliesTo?: string;
643
+ confidence: number;
644
+ examples: unknown[];
645
+ learnedFrom: number; // Number of observations
646
+ }
647
+ ```
648
+
649
+ ### Correction Schema
650
+
651
+ ```typescript
652
+ interface Correction {
653
+ id: string;
654
+ timestamp: string;
655
+ type: 'naming' | 'code' | 'structure' | 'other';
656
+ original: string;
657
+ corrected: string;
658
+ context?: string;
659
+ autoApply: boolean;
660
+ }
661
+ ```
662
+
663
+ ---
664
+
665
+ ## CLI Commands
666
+
667
+ ### Learning Management Commands
668
+
669
+ ```typescript
670
+ // cli/commands/learning.ts
671
+
672
+ import { Command } from 'commander';
673
+ import { learningStorage, analyzer, adapter } from '../learning';
674
+
675
+ export const learningCommand = new Command('learning')
676
+ .description('Manage learning system');
677
+
678
+ learningCommand
679
+ .command('report')
680
+ .description('Show learning report')
681
+ .action(async () => {
682
+ const [prefs, patterns, corrections] = await Promise.all([
683
+ learningStorage.loadPreferences(),
684
+ learningStorage.loadPatterns(),
685
+ learningStorage.loadCorrections(),
686
+ ]);
687
+
688
+ console.log('ProAgents Learning Report');
689
+ console.log('='.repeat(40));
690
+ console.log(`Patterns Learned: ${patterns.codePatterns.length}`);
691
+ console.log(`Auto-corrections: ${corrections.filter(c => c.autoApply).length}`);
692
+ console.log(`Checkpoint preferences: ${Object.keys(prefs.checkpoints).length}`);
693
+ console.log();
694
+
695
+ if (patterns.codePatterns.length > 0) {
696
+ console.log('Top Patterns:');
697
+ for (const p of patterns.codePatterns.slice(0, 5)) {
698
+ console.log(` - ${p.type}: ${p.pattern}`);
699
+ }
700
+ }
701
+ });
702
+
703
+ learningCommand
704
+ .command('reset')
705
+ .description('Reset learning data')
706
+ .option('--preferences', 'Reset only preferences')
707
+ .option('--patterns', 'Reset only patterns')
708
+ .option('--all', 'Reset everything')
709
+ .action(async (options) => {
710
+ if (options.all) {
711
+ await learningStorage.reset();
712
+ console.log('All learning data reset.');
713
+ } else if (options.preferences) {
714
+ await learningStorage.resetPreferences();
715
+ console.log('Preferences reset.');
716
+ } else if (options.patterns) {
717
+ await learningStorage.resetPatterns();
718
+ console.log('Patterns reset.');
719
+ }
720
+ adapter.invalidateCache();
721
+ });
722
+
723
+ learningCommand
724
+ .command('export')
725
+ .description('Export learning data')
726
+ .argument('<path>', 'Export path')
727
+ .action(async (exportPath) => {
728
+ const data = await learningStorage.exportAll();
729
+ await fs.writeFile(exportPath, JSON.stringify(data, null, 2));
730
+ console.log(`Exported to ${exportPath}`);
731
+ });
732
+ ```
733
+
734
+ ---
735
+
736
+ ## Configuration Options
737
+
738
+ ```yaml
739
+ # proagents.config.yaml
740
+
741
+ learning:
742
+ # Enable/disable learning
743
+ enabled: true
744
+
745
+ # What to track
746
+ tracking:
747
+ preferences: true
748
+ patterns: true
749
+ corrections: true
750
+ metrics: true
751
+
752
+ # Auto-apply settings
753
+ auto_apply:
754
+ corrections: true
755
+ corrections_threshold: 5 # Apply after this many occurrences
756
+ checkpoint_skip: true
757
+ checkpoint_skip_threshold: 0.8 # Skip if >80% skip rate
758
+
759
+ # Privacy settings
760
+ privacy:
761
+ truncate_code_samples: true
762
+ max_sample_length: 200
763
+ exclude_paths:
764
+ - "**/.env*"
765
+ - "**/secrets/**"
766
+
767
+ # Storage settings
768
+ storage:
769
+ max_events_file_size_mb: 10
770
+ archive_after_days: 30
771
+ retention_days: 90
772
+ ```
773
+
774
+ ---
775
+
776
+ ## Testing the Learning System
777
+
778
+ ```typescript
779
+ // learning/__tests__/analyzer.test.ts
780
+
781
+ describe('PatternAnalyzer', () => {
782
+ it('extracts naming patterns from modifications', async () => {
783
+ const events: LearningEvent[] = [
784
+ { type: 'output_modified', data: { category: 'naming', original: 'getData', modified: 'fetchUserData' } },
785
+ { type: 'output_modified', data: { category: 'naming', original: 'handleClick', modified: 'handleUserClick' } },
786
+ { type: 'output_modified', data: { category: 'naming', original: 'process', modified: 'processUserInput' } },
787
+ ];
788
+
789
+ const analysis = await analyzer.analyze(events);
790
+
791
+ expect(analysis.codePatterns).toContainEqual(
792
+ expect.objectContaining({
793
+ type: 'naming',
794
+ pattern: expect.stringContaining('descriptive'),
795
+ })
796
+ );
797
+ });
798
+
799
+ it('identifies checkpoint preferences', async () => {
800
+ const events: LearningEvent[] = [
801
+ { type: 'checkpoint_skipped', data: { checkpoint: 'after_requirements' } },
802
+ { type: 'checkpoint_skipped', data: { checkpoint: 'after_requirements' } },
803
+ { type: 'checkpoint_skipped', data: { checkpoint: 'after_requirements' } },
804
+ { type: 'checkpoint_reviewed', data: { checkpoint: 'after_design' } },
805
+ { type: 'checkpoint_reviewed', data: { checkpoint: 'after_design' } },
806
+ { type: 'checkpoint_reviewed', data: { checkpoint: 'after_design' } },
807
+ ];
808
+
809
+ const analysis = await analyzer.analyze(events);
810
+
811
+ expect(analysis.checkpointPreferences).toContainEqual(
812
+ expect.objectContaining({
813
+ checkpoint: 'after_requirements',
814
+ recommendation: 'auto_skip',
815
+ })
816
+ );
817
+ });
818
+ });
819
+ ```
820
+
821
+ ---
822
+
823
+ ## Extending the Learning System
824
+
825
+ ### Adding Custom Learners
826
+
827
+ ```typescript
828
+ // learning/custom/myLearner.ts
829
+
830
+ import { BaseLearner } from '../base';
831
+
832
+ export class CustomApiPatternLearner extends BaseLearner {
833
+ name = 'api-patterns';
834
+
835
+ async learn(events: LearningEvent[]): Promise<Pattern[]> {
836
+ // Filter relevant events
837
+ const apiEvents = events.filter((e) =>
838
+ e.data.filePath?.includes('/api/') ||
839
+ e.data.filePath?.includes('/services/')
840
+ );
841
+
842
+ // Extract patterns
843
+ return this.extractPatterns(apiEvents);
844
+ }
845
+
846
+ async apply(code: string, patterns: Pattern[]): Promise<string> {
847
+ // Apply learned API patterns
848
+ return this.applyPatterns(code, patterns);
849
+ }
850
+ }
851
+
852
+ // Register learner
853
+ learningSystem.registerLearner(new CustomApiPatternLearner());
854
+ ```
855
+
856
+ ---
857
+
858
+ ## Best Practices
859
+
860
+ 1. **Privacy First**: Never store sensitive data (credentials, personal info)
861
+ 2. **Confidence Thresholds**: Only apply patterns with high confidence (>0.8)
862
+ 3. **Sample Size Requirements**: Require minimum observations (3-5) before learning
863
+ 4. **User Override**: Always allow users to override learned behavior
864
+ 5. **Transparency**: Show users what has been learned via reports
865
+ 6. **Graceful Degradation**: System works without learning data