aiox-core 5.0.3 → 5.0.4

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 (468) hide show
  1. package/.aiox-core/core/execution/predictive-pipeline.js +1283 -0
  2. package/.aiox-core/core/memory/decision-memory.js +564 -0
  3. package/.aiox-core/data/entity-registry.yaml +1068 -1028
  4. package/.aiox-core/data/registry-update-log.jsonl +2 -2
  5. package/.aiox-core/development/templates/service-template/README.md.hbs +158 -158
  6. package/.aiox-core/development/templates/service-template/__tests__/index.test.ts.hbs +237 -237
  7. package/.aiox-core/development/templates/service-template/client.ts.hbs +403 -403
  8. package/.aiox-core/development/templates/service-template/errors.ts.hbs +182 -182
  9. package/.aiox-core/development/templates/service-template/index.ts.hbs +120 -120
  10. package/.aiox-core/development/templates/service-template/package.json.hbs +87 -87
  11. package/.aiox-core/development/templates/service-template/types.ts.hbs +145 -145
  12. package/.aiox-core/development/templates/squad-template/LICENSE +21 -21
  13. package/.aiox-core/infrastructure/templates/aiox-sync.yaml.template +182 -182
  14. package/.aiox-core/infrastructure/templates/coderabbit.yaml.template +279 -279
  15. package/.aiox-core/infrastructure/templates/github-workflows/ci.yml.template +169 -169
  16. package/.aiox-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -330
  17. package/.aiox-core/infrastructure/templates/github-workflows/release.yml.template +196 -196
  18. package/.aiox-core/infrastructure/templates/gitignore/gitignore-aiox-base.tmpl +63 -63
  19. package/.aiox-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -18
  20. package/.aiox-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -85
  21. package/.aiox-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -145
  22. package/.aiox-core/install-manifest.yaml +63 -55
  23. package/.aiox-core/local-config.yaml.template +71 -71
  24. package/.aiox-core/monitor/hooks/lib/__init__.py +1 -1
  25. package/.aiox-core/monitor/hooks/lib/enrich.py +58 -58
  26. package/.aiox-core/monitor/hooks/lib/send_event.py +47 -47
  27. package/.aiox-core/monitor/hooks/notification.py +29 -29
  28. package/.aiox-core/monitor/hooks/post_tool_use.py +45 -45
  29. package/.aiox-core/monitor/hooks/pre_compact.py +29 -29
  30. package/.aiox-core/monitor/hooks/pre_tool_use.py +40 -40
  31. package/.aiox-core/monitor/hooks/stop.py +29 -29
  32. package/.aiox-core/monitor/hooks/subagent_stop.py +29 -29
  33. package/.aiox-core/monitor/hooks/user_prompt_submit.py +38 -38
  34. package/.aiox-core/product/templates/adr.hbs +125 -125
  35. package/.aiox-core/product/templates/dbdr.hbs +241 -241
  36. package/.aiox-core/product/templates/epic.hbs +212 -212
  37. package/.aiox-core/product/templates/pmdr.hbs +186 -186
  38. package/.aiox-core/product/templates/prd-v2.0.hbs +216 -216
  39. package/.aiox-core/product/templates/prd.hbs +201 -201
  40. package/.aiox-core/product/templates/story.hbs +263 -263
  41. package/.aiox-core/product/templates/task.hbs +170 -170
  42. package/.aiox-core/product/templates/tmpl-comment-on-examples.sql +158 -158
  43. package/.aiox-core/product/templates/tmpl-migration-script.sql +91 -91
  44. package/.aiox-core/product/templates/tmpl-rls-granular-policies.sql +104 -104
  45. package/.aiox-core/product/templates/tmpl-rls-kiss-policy.sql +10 -10
  46. package/.aiox-core/product/templates/tmpl-rls-roles.sql +135 -135
  47. package/.aiox-core/product/templates/tmpl-rls-simple.sql +77 -77
  48. package/.aiox-core/product/templates/tmpl-rls-tenant.sql +152 -152
  49. package/.aiox-core/product/templates/tmpl-rollback-script.sql +77 -77
  50. package/.aiox-core/product/templates/tmpl-seed-data.sql +140 -140
  51. package/.aiox-core/product/templates/tmpl-smoke-test.sql +16 -16
  52. package/.aiox-core/product/templates/tmpl-staging-copy-merge.sql +139 -139
  53. package/.aiox-core/product/templates/tmpl-stored-proc.sql +140 -140
  54. package/.aiox-core/product/templates/tmpl-trigger.sql +152 -152
  55. package/.aiox-core/product/templates/tmpl-view-materialized.sql +133 -133
  56. package/.aiox-core/product/templates/tmpl-view.sql +177 -177
  57. package/.aiox-core/scripts/pm.sh +0 -0
  58. package/.claude/hooks/enforce-architecture-first.py +196 -196
  59. package/.claude/hooks/mind-clone-governance.py +192 -192
  60. package/.claude/hooks/read-protection.py +151 -151
  61. package/.claude/hooks/slug-validation.py +176 -176
  62. package/.claude/hooks/sql-governance.py +182 -182
  63. package/.claude/hooks/write-path-validation.py +194 -194
  64. package/LICENSE +33 -33
  65. package/bin/aiox-graph.js +0 -0
  66. package/bin/aiox-minimal.js +0 -0
  67. package/bin/aiox.js +0 -0
  68. package/package.json +1 -1
  69. package/packages/aiox-install/bin/aiox-install.js +0 -0
  70. package/packages/aiox-install/bin/edmcp.js +0 -0
  71. package/packages/aiox-pro-cli/bin/aiox-pro.js +0 -0
  72. package/packages/installer/src/wizard/pro-setup.js +28 -0
  73. package/pro/README.md +66 -66
  74. package/pro/feature-registry.yaml +225 -223
  75. package/pro/license/license-api.js +701 -679
  76. package/pro/package.json +39 -39
  77. package/pro/pro-config.yaml +63 -63
  78. package/pro/squads/README.md +24 -24
  79. package/pro/squads/design/HEADLINE.md +3 -3
  80. package/pro/squads/design/README.md +109 -109
  81. package/pro/squads/design/agents/brad-frost.md +1097 -1097
  82. package/pro/squads/design/agents/dan-mall.md +857 -857
  83. package/pro/squads/design/agents/dave-malouf.md +2272 -2272
  84. package/pro/squads/design/agents/design-chief.md +114 -114
  85. package/pro/squads/design/agents/ds-foundations-lead.md +194 -194
  86. package/pro/squads/design/agents/ds-token-architect.md +361 -361
  87. package/pro/squads/design/agents/nano-banana-generator.md +162 -162
  88. package/pro/squads/design/agents/storybook-expert.md +809 -809
  89. package/pro/squads/design/checklists/atomic-refactor-checklist.md +299 -299
  90. package/pro/squads/design/checklists/component-adaptation-checklist.md +81 -81
  91. package/pro/squads/design/checklists/design-fidelity-checklist.md +283 -283
  92. package/pro/squads/design/checklists/design-handoff-checklist.md +55 -55
  93. package/pro/squads/design/checklists/design-team-health-checklist.md +454 -454
  94. package/pro/squads/design/checklists/designops-maturity-checklist.md +518 -518
  95. package/pro/squads/design/checklists/ds-a11y-release-gate-checklist.md +45 -45
  96. package/pro/squads/design/checklists/ds-accessibility-wcag-checklist.md +147 -147
  97. package/pro/squads/design/checklists/ds-component-quality-checklist.md +150 -150
  98. package/pro/squads/design/checklists/ds-critical-eye-review-checklist.md +147 -147
  99. package/pro/squads/design/checklists/ds-migration-readiness-checklist.md +99 -99
  100. package/pro/squads/design/checklists/ds-pattern-audit-checklist.md +164 -164
  101. package/pro/squads/design/checklists/reading-accessibility-checklist.md +275 -275
  102. package/pro/squads/design/checklists/token-mapping-checklist.md +107 -107
  103. package/pro/squads/design/config/coding-standards.md +286 -286
  104. package/pro/squads/design/config/source-tree.md +59 -59
  105. package/pro/squads/design/config/tech-stack.md +48 -48
  106. package/pro/squads/design/config.yaml +204 -204
  107. package/pro/squads/design/data/agentic-design-systems-guide.md +46 -46
  108. package/pro/squads/design/data/agentic-ds-principles.md +100 -100
  109. package/pro/squads/design/data/atomic-design-principles.md +108 -108
  110. package/pro/squads/design/data/atomic-refactor-rules.md +582 -582
  111. package/pro/squads/design/data/base-component-specs.md +972 -972
  112. package/pro/squads/design/data/brad-frost-analysis-extract-implicit.yaml +270 -270
  113. package/pro/squads/design/data/brad-frost-analysis-find-0.8.yaml +176 -176
  114. package/pro/squads/design/data/brad-frost-analysis-qa-report.yaml +168 -168
  115. package/pro/squads/design/data/brad-frost-dna.yaml +713 -713
  116. package/pro/squads/design/data/capability-tools.yaml +124 -124
  117. package/pro/squads/design/data/component-adaptation-changelog.md +318 -318
  118. package/pro/squads/design/data/consolidation-algorithms.md +168 -168
  119. package/pro/squads/design/data/critical-eye-scoring-rules.yaml +240 -240
  120. package/pro/squads/design/data/design-token-best-practices.md +107 -107
  121. package/pro/squads/design/data/design-tokens-spec.yaml +418 -418
  122. package/pro/squads/design/data/ds-reference-architectures.md +93 -93
  123. package/pro/squads/design/data/f2-qa-report.md +168 -168
  124. package/pro/squads/design/data/f3-derived-components-changelog.md +100 -100
  125. package/pro/squads/design/data/f3-qa-report.md +208 -208
  126. package/pro/squads/design/data/figma-base-components-raw.md +101 -101
  127. package/pro/squads/design/data/figma-tokens-raw.md +1548 -1548
  128. package/pro/squads/design/data/fluent2-design-principles.md +114 -114
  129. package/pro/squads/design/data/high-retention-reading-guide.md +349 -349
  130. package/pro/squads/design/data/integration-patterns.md +207 -207
  131. package/pro/squads/design/data/internal-quality-chain.yaml +48 -48
  132. package/pro/squads/design/data/motion-tokens-guide.md +202 -202
  133. package/pro/squads/design/data/roi-calculation-guide.md +142 -142
  134. package/pro/squads/design/data/token-mapping-reference.md +213 -213
  135. package/pro/squads/design/data/w3c-dtcg-spec-reference.md +149 -149
  136. package/pro/squads/design/data/wcag-compliance-guide.md +267 -267
  137. package/pro/squads/design/docs/AUDIT_REPORT.md +97 -97
  138. package/pro/squads/design/docs/DS-CURATION-PIPELINE-PROPOSAL.md +577 -577
  139. package/pro/squads/design/docs/UPGRADE_PLAN.md +618 -618
  140. package/pro/squads/design/docs/brad-frost-research-validation.md +372 -372
  141. package/pro/squads/design/docs/dave-malouf-research-validation.md +391 -391
  142. package/pro/squads/design/docs/tool-discovery-report.md +87 -87
  143. package/pro/squads/design/docs/tool-integration-plan.md +44 -44
  144. package/pro/squads/design/protocols/ai-first-governance.md +56 -56
  145. package/pro/squads/design/protocols/governance-execution-boundary.md +59 -59
  146. package/pro/squads/design/protocols/handoff.md +60 -60
  147. package/pro/squads/design/rules/.claude-rules.md +88 -88
  148. package/pro/squads/design/scripts/design-system/curate_colors.cjs +447 -447
  149. package/pro/squads/design/scripts/design-system/curate_components.cjs +217 -217
  150. package/pro/squads/design/scripts/design-system/curate_radius.cjs +190 -190
  151. package/pro/squads/design/scripts/design-system/curate_shadows.cjs +208 -208
  152. package/pro/squads/design/scripts/design-system/curate_spacing.cjs +243 -243
  153. package/pro/squads/design/scripts/design-system/curate_typography.cjs +404 -404
  154. package/pro/squads/design/scripts/design-system/design-system-metadata.test.js +49 -49
  155. package/pro/squads/design/scripts/design-system/design_manifest_lib.cjs +142 -142
  156. package/pro/squads/design/scripts/design-system/fetch_page_images.cjs +195 -195
  157. package/pro/squads/design/scripts/design-system/generate_components_metadata.cjs +114 -114
  158. package/pro/squads/design/scripts/design-system/generate_curation_report.cjs +258 -258
  159. package/pro/squads/design/scripts/design-system/generate_tokens.cjs +342 -342
  160. package/pro/squads/design/scripts/design-system/sync_design_manifest.cjs +27 -27
  161. package/pro/squads/design/scripts/design-system/test_mcp_tools.cjs +232 -232
  162. package/pro/squads/design/scripts/design-system/validate_components_metadata.cjs +96 -96
  163. package/pro/squads/design/scripts/design-system/validate_curation.cjs +226 -226
  164. package/pro/squads/design/scripts/design-system/validate_design_manifest_drift.cjs +72 -72
  165. package/pro/squads/design/scripts/design-system/validate_mcp_skeleton.cjs +38 -38
  166. package/pro/squads/design/scripts/design-system/validate_registry.cjs +186 -186
  167. package/pro/squads/design/scripts/design-system/validate_task_checklist_bindings.cjs +78 -78
  168. package/pro/squads/design/scripts/dissect-artifact.cjs +806 -806
  169. package/pro/squads/design/scripts/validate-a11y-integration.cjs +40 -40
  170. package/pro/squads/design/scripts/validate-design-squad.py +411 -411
  171. package/pro/squads/design/squad.yaml +714 -714
  172. package/pro/squads/design/tasks/a11y-audit.md +340 -340
  173. package/pro/squads/design/tasks/aria-audit.md +525 -525
  174. package/pro/squads/design/tasks/atomic-refactor-execute.md +391 -391
  175. package/pro/squads/design/tasks/atomic-refactor-plan.md +262 -262
  176. package/pro/squads/design/tasks/audit-reading-experience.md +350 -350
  177. package/pro/squads/design/tasks/audit-tailwind-config.md +101 -101
  178. package/pro/squads/design/tasks/bootstrap-shadcn-library.md +96 -96
  179. package/pro/squads/design/tasks/bundle-audit.md +245 -245
  180. package/pro/squads/design/tasks/contrast-matrix.md +373 -373
  181. package/pro/squads/design/tasks/create-doc.md +135 -135
  182. package/pro/squads/design/tasks/dead-code-detection.md +329 -329
  183. package/pro/squads/design/tasks/design-compare.md +414 -414
  184. package/pro/squads/design/tasks/design-process-optimization.md +407 -407
  185. package/pro/squads/design/tasks/design-review-orchestration.md +99 -99
  186. package/pro/squads/design/tasks/design-team-scaling.md +407 -407
  187. package/pro/squads/design/tasks/design-tooling-audit.md +404 -404
  188. package/pro/squads/design/tasks/design-triage.md +89 -89
  189. package/pro/squads/design/tasks/designops-maturity-assessment.md +364 -364
  190. package/pro/squads/design/tasks/designops-metrics-setup.md +465 -465
  191. package/pro/squads/design/tasks/ds-agentic-audit.md +100 -100
  192. package/pro/squads/design/tasks/ds-agentic-setup.md +103 -103
  193. package/pro/squads/design/tasks/ds-audit-codebase.md +273 -273
  194. package/pro/squads/design/tasks/ds-build-component.md +349 -349
  195. package/pro/squads/design/tasks/ds-build-mcp-server.md +84 -84
  196. package/pro/squads/design/tasks/ds-calculate-roi.md +282 -282
  197. package/pro/squads/design/tasks/ds-compose-molecule.md +106 -106
  198. package/pro/squads/design/tasks/ds-consolidate-patterns.md +253 -253
  199. package/pro/squads/design/tasks/ds-context-contract.md +194 -194
  200. package/pro/squads/design/tasks/ds-critical-eye-compare.md +130 -130
  201. package/pro/squads/design/tasks/ds-critical-eye-decide.md +139 -139
  202. package/pro/squads/design/tasks/ds-critical-eye-inventory.md +111 -111
  203. package/pro/squads/design/tasks/ds-critical-eye-report.md +101 -101
  204. package/pro/squads/design/tasks/ds-critical-eye-score.md +109 -109
  205. package/pro/squads/design/tasks/ds-designops.md +99 -99
  206. package/pro/squads/design/tasks/ds-extend-pattern.md +91 -91
  207. package/pro/squads/design/tasks/ds-extract-tokens.md +312 -312
  208. package/pro/squads/design/tasks/ds-figma-pipeline.md +95 -95
  209. package/pro/squads/design/tasks/ds-fluent-audit.md +105 -105
  210. package/pro/squads/design/tasks/ds-fluent-build.md +110 -110
  211. package/pro/squads/design/tasks/ds-generate-ai-metadata.md +81 -81
  212. package/pro/squads/design/tasks/ds-generate-cursor-rules.md +74 -74
  213. package/pro/squads/design/tasks/ds-generate-documentation.md +101 -101
  214. package/pro/squads/design/tasks/ds-generate-migration-strategy.md +331 -331
  215. package/pro/squads/design/tasks/ds-generate-shock-report.md +323 -323
  216. package/pro/squads/design/tasks/ds-govern-a11y-compliance.md +93 -93
  217. package/pro/squads/design/tasks/ds-governance.md +187 -187
  218. package/pro/squads/design/tasks/ds-health-metrics.md +278 -278
  219. package/pro/squads/design/tasks/ds-integrate-squad.md +130 -130
  220. package/pro/squads/design/tasks/ds-integrate-workspace.md +100 -100
  221. package/pro/squads/design/tasks/ds-legacy-modernization.md +302 -302
  222. package/pro/squads/design/tasks/ds-mcp-status.md +65 -65
  223. package/pro/squads/design/tasks/ds-motion-audit.md +118 -118
  224. package/pro/squads/design/tasks/ds-multi-framework.md +96 -96
  225. package/pro/squads/design/tasks/ds-parallelization-gate.md +246 -246
  226. package/pro/squads/design/tasks/ds-query.md +90 -90
  227. package/pro/squads/design/tasks/ds-rebuild-artifact.md +369 -369
  228. package/pro/squads/design/tasks/ds-reverse-engineer.md +194 -194
  229. package/pro/squads/design/tasks/ds-scan-artifact.md +131 -131
  230. package/pro/squads/design/tasks/ds-setup-design-system.md +297 -297
  231. package/pro/squads/design/tasks/ds-sync-registry.md +287 -287
  232. package/pro/squads/design/tasks/ds-theme-multi-brand.md +90 -90
  233. package/pro/squads/design/tasks/ds-token-modes.md +108 -108
  234. package/pro/squads/design/tasks/ds-token-w3c-extract.md +105 -105
  235. package/pro/squads/design/tasks/ds-validate-ai-readiness.md +69 -69
  236. package/pro/squads/design/tasks/ds-visual-regression.md +130 -130
  237. package/pro/squads/design/tasks/execute-checklist.md +141 -141
  238. package/pro/squads/design/tasks/export-design-tokens-dtcg.md +97 -97
  239. package/pro/squads/design/tasks/f1-apply-foundations.md +154 -154
  240. package/pro/squads/design/tasks/f1-ingest-figma-tokens.md +130 -130
  241. package/pro/squads/design/tasks/f1-map-tokens-to-shadcn.md +145 -145
  242. package/pro/squads/design/tasks/f1-qa-foundations.md +95 -95
  243. package/pro/squads/design/tasks/f2-adapt-shadcn-components.md +155 -155
  244. package/pro/squads/design/tasks/f2-ingest-base-components.md +148 -148
  245. package/pro/squads/design/tasks/f2-qa-base-components.md +98 -98
  246. package/pro/squads/design/tasks/f3-derive-components.md +145 -145
  247. package/pro/squads/design/tasks/f3-qa-derived-components.md +101 -101
  248. package/pro/squads/design/tasks/focus-order-audit.md +450 -450
  249. package/pro/squads/design/tasks/sb-brownfield-migrate.md +367 -367
  250. package/pro/squads/design/tasks/sb-brownfield-scan.md +318 -318
  251. package/pro/squads/design/tasks/sb-configure.md +230 -230
  252. package/pro/squads/design/tasks/sb-expand-shadcn.md +213 -213
  253. package/pro/squads/design/tasks/sb-generate-all-stories.md +288 -288
  254. package/pro/squads/design/tasks/sb-install.md +152 -152
  255. package/pro/squads/design/tasks/sb-sync-workspace.md +239 -239
  256. package/pro/squads/design/tasks/sb-verify.md +203 -203
  257. package/pro/squads/design/tasks/tailwind-upgrade.md +117 -117
  258. package/pro/squads/design/tasks/token-usage-analytics.md +262 -262
  259. package/pro/squads/design/tasks/ux-rewrite-sixth-grade.md +82 -82
  260. package/pro/squads/design/tasks/validate-design-fidelity.md +222 -222
  261. package/pro/squads/design/templates/agent-template.yaml +46 -46
  262. package/pro/squads/design/templates/clone-mind-template.md +352 -352
  263. package/pro/squads/design/templates/component-prompt-injection-tmpl.md +236 -236
  264. package/pro/squads/design/templates/component-visual-spec-tmpl.md +378 -378
  265. package/pro/squads/design/templates/critical-eye-cycle-report-tmpl.md +165 -165
  266. package/pro/squads/design/templates/design-fidelity-report-tmpl.md +155 -155
  267. package/pro/squads/design/templates/ds-ai-component-metadata-schema-tmpl.json +138 -138
  268. package/pro/squads/design/templates/ds-artifact-analysis.md +70 -70
  269. package/pro/squads/design/templates/ds-health-report-tmpl.md +236 -236
  270. package/pro/squads/design/templates/ds-migration-strategy-tmpl.md +524 -524
  271. package/pro/squads/design/templates/ds-state-persistence-tmpl.yaml +194 -194
  272. package/pro/squads/design/templates/ds-tokens-schema-tmpl.yaml +139 -139
  273. package/pro/squads/design/templates/migration-strategy-tmpl.md +524 -524
  274. package/pro/squads/design/templates/reading-design-tokens.css +26 -26
  275. package/pro/squads/design/templates/state-persistence-tmpl.yaml +219 -219
  276. package/pro/squads/design/templates/tokens-schema-tmpl.yaml +305 -305
  277. package/pro/squads/design/workflows/agentic-readiness.yaml +83 -83
  278. package/pro/squads/design/workflows/audit-only.yaml +198 -198
  279. package/pro/squads/design/workflows/brownfield-complete.yaml +257 -257
  280. package/pro/squads/design/workflows/critical-eye.yaml +184 -184
  281. package/pro/squads/design/workflows/dtcg-tokens-governance.yaml +64 -64
  282. package/pro/squads/design/workflows/foundations-pipeline.yaml +192 -192
  283. package/pro/squads/design/workflows/greenfield-new.yaml +192 -192
  284. package/pro/squads/design/workflows/motion-quality.yaml +65 -65
  285. package/pro/squads/design/workflows/self-healing-workflow.yaml +237 -237
  286. package/pro/squads/design/workflows/storybook-brownfield-migration.yaml +400 -400
  287. package/pro/squads/design/workflows/storybook-full-setup.yaml +280 -280
  288. package/pro/squads/mmos-squad/minds/alex_hormozi/artifacts/ARQUITETURA_COGNITIVA_DE_ALEX_HORMOZI_EXTRA/303/207/303/203O_COMPLETA.md +215 -0
  289. package/pro/squads/mmos-squad/minds/alex_hormozi/artifacts/A_Rotina_de_Alta_Performance_de_Alex_Hormozi_Arquitetura,_Motiva/303/247/303/265es_e_Replica/303/247/303/243o.md +309 -0
  290. package/pro/squads/mmos-squad/minds/alex_hormozi/artifacts/O_sistema_completo_de_cria/303/247/303/243o_de_conte/303/272do_de_Alex_Hormozi.md +416 -0
  291. package/pro/squads/mmos-squad/minds/alex_hormozi/artifacts/Processo_Cria/303/247/303/243o_Conte/303/272do_Hormozi.md +0 -0
  292. package/pro/squads/mmos-squad/minds/brad_frost/.backup/2026-01-13/artifacts/DECIS/303/225ES_ESTRAT/303/211GICAS_DE_DESIGN_SYSTEMS_(2022_2025).md +1038 -0
  293. package/pro/squads/mmos-squad/minds/brad_frost/.backup/2026-01-13/artifacts/FRAMEWORK_COMPLETO_DE_IMPLEMENTA/303/207/303/203O_ATOMIC_DESIGN.md +797 -0
  294. package/pro/squads/mmos-squad/minds/brad_frost/.backup/2026-01-13/artifacts/O_Cemit/303/251rio_de_Design_Systems.md +447 -0
  295. package/pro/squads/mmos-squad/minds/brad_frost/.backup/2026-01-13/artifacts/PRINC/303/215PIOS_DE_RACIOC/303/215NIO.md +190 -0
  296. package/pro/squads/mmos-squad/minds/brad_frost/artifacts/DECIS/303/225ES_ESTRAT/303/211GICAS_DE_DESIGN_SYSTEMS_(2022_2025).md +1038 -0
  297. package/pro/squads/mmos-squad/minds/brad_frost/artifacts/FRAMEWORK_COMPLETO_DE_IMPLEMENTA/303/207/303/203O_ATOMIC_DESIGN.md +797 -0
  298. package/pro/squads/mmos-squad/minds/brad_frost/artifacts/O_Cemit/303/251rio_de_Design_Systems.md +447 -0
  299. package/pro/squads/mmos-squad/minds/brad_frost/artifacts/PRINC/303/215PIOS_DE_RACIOC/303/215NIO.md +190 -0
  300. package/pro/squads/mmos-squad/minds/elon_musk/artifacts/AN/303/201LISE_PSICOM/303/211TRICA_PROFUNDA_ELON_MUSK.md +291 -0
  301. package/pro/squads/mmos-squad/minds/elon_musk/artifacts/ASSINATURA_LINGU/303/215STICA_ELON_MUSK.md +485 -0
  302. package/pro/squads/mmos-squad/minds/elon_musk/artifacts/A_Arquitetura_Mental_de_Elon_Musk_Uma_An/303/241lise_Sistem/303/241tica_dos_Frameworks_de_Pensamento.md +907 -0
  303. package/pro/squads/mmos-squad/minds/elon_musk/artifacts/Dossi/303/252_Estrat/303/251gico_A_Arquitetura_Psicol/303/263gica_de_Elon_Musk.md +252 -0
  304. package/pro/squads/mmos-squad/minds/elon_musk/artifacts/Os_Padr/303/265es_de_Leitura_de_Elon_Musk_e_Sua_Influ/303/252ncia_Sistem/303/241tica.md +287 -0
  305. package/pro/squads/mmos-squad/minds/elon_musk/artifacts/Uma_an/303/241lise_psicol/303/263gica_abrangente.md +187 -0
  306. package/pro/squads/mmos-squad/minds/eugene_schwartz/artifacts/AN/303/201LISE_PSICOM/303/211TRICA_PROFUNDA_EUGENE_M._SCHWARTZ.md +790 -0
  307. package/pro/squads/mmos-squad/minds/eugene_schwartz/artifacts/An/303/241lise_Completa_Eugene_Schwartz_Arquitetura_Cognitiva_DEEP.md +210 -0
  308. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/5H_EXTRA/303/207/303/203O_COGNITIVA_COMPLETA_PEDRO_VAL/303/211RIO_LOPEZ.md +226 -0
  309. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/AN/303/201LISE_COMPARATIVA_REVISADA_PEDRO_VAL/303/211RIO_LOPEZ.md +246 -0
  310. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/AN/303/201LISE_LINGU/303/215STICA_CARIOCA_PEDRO_VAL/303/211RIO_LOPEZ.md +274 -0
  311. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/AN/303/201LISE_PSICOM/303/211TRICA_DEFINITIVA_PEDRO_VAL/303/211RIO_LOPEZ.md +821 -0
  312. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/AN/303/201LISE_PSICOM/303/211TRICA_PROFUNDA_PEDRO_VAL/303/211RIO.md +1844 -0
  313. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/C/303/201LCULO_DE_RARIDADE_ESTAT/303/215STICA_PEDRO_VAL/303/211RIO_LOPEZ.md +154 -0
  314. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/EXTRA/303/207/303/203O_PEDRO_VAL/303/211RIO.md +237 -0
  315. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/MAPEAMENTO_LINGU/303/215STICO_PROFUNDO.md +161 -0
  316. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/META_AXIOMAS_DE_PEDRO_VAL/303/211RIO.md +256 -0
  317. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/SISTEMA_IMUNOL/303/223GICO_COGNITIVO_PEDRO_VAL/303/211RIO_LOPEZ.md +586 -0
  318. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/SISTEMA_IMUNOL/303/223GICO_COGNITIVO_V2_/342/200/224_CLONE_IA.md +452 -0
  319. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/TABELA_COMPARATIVA_AN/303/201LISE_COMPLETA_DOS_CLONES_IA.md +102 -0
  320. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/WHATSAPP_PADR/303/225ES_LINGU/303/215STICOS_PEDRO_VAL/303/211RIO_LOPEZ.md +286 -0
  321. package/pro/squads/mmos-squad/minds/pedro_valerio/sources/artifacts_v1.6/heur/303/255sticas_de_decis/303/243o_e_algoritmos_mentais_/303/272nicos.md +268 -0
  322. package/pro/squads/mmos-squad/minds/ray_kurzweil/sources/books/PROTOCOLO_COMPLETO_DE_INTERROGA/303/207/303/203O_-_NAVAL_RAVIKANT.md +3624 -0
  323. package/pro/squads/mmos-squad/minds/steve_jobs/artifacts/FRAMEWORK_COMPLETO_DE_IMPLEMENTA/303/207/303/203O_JOBS.md +488 -0
  324. package/pro/squads/mmos-squad/minds/steve_jobs/artifacts/Framework_Cabe/303/247a_Steve.md +257 -0
  325. package/pro/squads/mmos-squad/minds/steve_jobs/artifacts/Relat/303/263rio_Abrangente_sobre_Steve_Jobs_para_Cria/303/247/303/243o_de_Clone_de_IA.md +370 -0
  326. package/pro/squads/mmos-squad/minds/steve_jobs/artifacts/Steve_Jobs_An/303/241lise_Psicol/303/263gica_Profunda_e_Valida/303/247/303/243o_Comportamental.md +65 -0
  327. package/pro/squads/squad-creator-pro/HEADLINE.md +3 -3
  328. package/pro/squads/squad-creator-pro/agents/oalanicolas.md +438 -438
  329. package/pro/squads/squad-creator-pro/agents/squad-chief.md +1651 -1651
  330. package/pro/squads/squad-creator-pro/agents/thiago_finch.md +976 -976
  331. package/pro/squads/squad-creator-pro/assessments/axioma-assessment-wf-create-squad.yaml +325 -325
  332. package/pro/squads/squad-creator-pro/checklists/create-agent-checklist.md +184 -184
  333. package/pro/squads/squad-creator-pro/checklists/create-squad-checklist.md +219 -219
  334. package/pro/squads/squad-creator-pro/checklists/create-workflow-checklist.md +224 -224
  335. package/pro/squads/squad-creator-pro/checklists/mental-model-integration-checklist.md +95 -95
  336. package/pro/squads/squad-creator-pro/checklists/squad-overview-checklist.md +393 -393
  337. package/pro/squads/squad-creator-pro/config/model-routing.yaml +693 -693
  338. package/pro/squads/squad-creator-pro/config/scoring-rubric.yaml +199 -199
  339. package/pro/squads/squad-creator-pro/config.yaml +35 -35
  340. package/pro/squads/squad-creator-pro/data/internal-infrastructure-library.yaml +99 -99
  341. package/pro/squads/squad-creator-pro/data/mental-model-task-matrix.yaml +692 -692
  342. package/pro/squads/squad-creator-pro/docs/ADR-001-model-tier-qualification.md +344 -344
  343. package/pro/squads/squad-creator-pro/docs/AGENT-COLLABORATION.md +609 -609
  344. package/pro/squads/squad-creator-pro/docs/MIGRATION-PLAN-AGENT-CONFORMITY.md +861 -861
  345. package/pro/squads/squad-creator-pro/docs/MODEL-TIER-QUALIFICATION.md +337 -337
  346. package/pro/squads/squad-creator-pro/docs/optimize-v4-proposal.md +354 -354
  347. package/pro/squads/squad-creator-pro/docs/task-optimization-framework.md +229 -229
  348. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_010.md +240 -240
  349. package/pro/squads/squad-creator-pro/protocols/ai-first-governance.md +63 -63
  350. package/pro/squads/squad-creator-pro/scripts/assess-sources.sh +443 -443
  351. package/pro/squads/squad-creator-pro/scripts/clone-review.sh +394 -394
  352. package/pro/squads/squad-creator-pro/scripts/create-agent-preflight.py +243 -243
  353. package/pro/squads/squad-creator-pro/scripts/cross-provider/compare-results.js +281 -281
  354. package/pro/squads/squad-creator-pro/scripts/cross-provider/cross-provider-runner.js +462 -462
  355. package/pro/squads/squad-creator-pro/scripts/fidelity-score.sh +519 -519
  356. package/pro/squads/squad-creator-pro/scripts/generate-squad-guide.js +558 -558
  357. package/pro/squads/squad-creator-pro/scripts/lib/config-loader.js +151 -151
  358. package/pro/squads/squad-creator-pro/scripts/model-tier-validator.cjs +369 -369
  359. package/pro/squads/squad-creator-pro/scripts/model-usage-logger.cjs +245 -245
  360. package/pro/squads/squad-creator-pro/scripts/modernization-score.sh +308 -308
  361. package/pro/squads/squad-creator-pro/scripts/scaffold-squad.cjs +281 -281
  362. package/pro/squads/squad-creator-pro/scripts/security_scanner.py +378 -378
  363. package/pro/squads/squad-creator-pro/scripts/squad-context-loader.cjs +205 -205
  364. package/pro/squads/squad-creator-pro/scripts/squad-state-manager.cjs +451 -451
  365. package/pro/squads/squad-creator-pro/scripts/squad-workflow-runner.cjs +471 -471
  366. package/pro/squads/squad-creator-pro/scripts/squad_utils.py +261 -261
  367. package/pro/squads/squad-creator-pro/scripts/tests/run_bash_tests.sh +29 -29
  368. package/pro/squads/squad-creator-pro/scripts/tests/test_assess_sources.sh +216 -216
  369. package/pro/squads/squad-creator-pro/scripts/tests/test_clone_review.sh +239 -239
  370. package/pro/squads/squad-creator-pro/scripts/tests/test_coherence_validator.py +212 -212
  371. package/pro/squads/squad-creator-pro/scripts/tests/test_fidelity_score.sh +298 -298
  372. package/pro/squads/squad-creator-pro/scripts/tests/test_modernization_score.sh +211 -211
  373. package/pro/squads/squad-creator-pro/scripts/tests/test_security_scanner.py +354 -354
  374. package/pro/squads/squad-creator-pro/scripts/tests/test_validate_clone.sh +252 -252
  375. package/pro/squads/squad-creator-pro/squad.yaml +36 -36
  376. package/pro/squads/squad-creator-pro/tasks/an-compare-outputs.md +354 -354
  377. package/pro/squads/squad-creator-pro/tasks/create-squad.md +933 -933
  378. package/pro/squads/squad-creator-pro/tasks/detect-squad-context.md +81 -81
  379. package/pro/squads/squad-creator-pro/tasks/lookup-model.md +78 -78
  380. package/pro/squads/squad-creator-pro/tasks/next-squad.md +487 -487
  381. package/pro/squads/squad-creator-pro/tasks/optimize-workflow.md +851 -851
  382. package/pro/squads/squad-creator-pro/tasks/parallel-discovery.md +58 -58
  383. package/pro/squads/squad-creator-pro/tasks/pv-axioma-assessment-wf-clone-mind.yaml +256 -256
  384. package/pro/squads/squad-creator-pro/tasks/qualify-task.md +265 -265
  385. package/pro/squads/squad-creator-pro/tasks/reexecute-squad-phase.md +64 -64
  386. package/pro/squads/squad-creator-pro/tasks/smoke-test-model-routing.md +167 -167
  387. package/pro/squads/squad-creator-pro/tasks/squad-overview.md +683 -683
  388. package/pro/squads/squad-creator-pro/tasks/validate-final-artifacts.md +80 -80
  389. package/pro/squads/squad-creator-pro/templates/orchestrator-tmpl.md +74 -74
  390. package/pro/squads/squad-creator-pro/test-cases/BATCH-PROGRESS.md +268 -268
  391. package/pro/squads/squad-creator-pro/test-cases/QUALIFICATION-DASHBOARD.yaml +13 -13
  392. package/pro/squads/squad-creator-pro/test-cases/_template.yaml +147 -147
  393. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/ASSESSMENT-SUMMARY.md +275 -275
  394. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/ASSESSMENT_SUMMARY.md +140 -140
  395. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/CHECKPOINT_MATRIX.md +202 -202
  396. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/EXECUTION-REPORT.md +413 -413
  397. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/EXECUTION_NOTES.md +358 -358
  398. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/README-v2.2.2.md +299 -299
  399. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/README.md +320 -320
  400. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/TEST-REPORT-v2.1.md +351 -351
  401. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/VERIFICATION-CHECKLIST.txt +247 -247
  402. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/formal-qualification-report.yaml +389 -389
  403. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-output.yaml +366 -366
  404. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-v2.1-output.yaml +452 -452
  405. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-v2.2.1-output.yaml +281 -281
  406. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-v2.2.2-output.yaml +332 -332
  407. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/opus-baseline.yaml +517 -517
  408. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/qualification-report.yaml +213 -213
  409. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/test-case.yaml +69 -69
  410. package/pro/squads/squad-creator-pro/test-cases/an-clone-review/haiku-round-1.yaml +213 -213
  411. package/pro/squads/squad-creator-pro/test-cases/an-clone-review/opus-baseline.yaml +566 -566
  412. package/pro/squads/squad-creator-pro/test-cases/an-clone-review/qualification-report.yaml +82 -82
  413. package/pro/squads/squad-creator-pro/test-cases/an-design-clone/test-case.yaml +102 -102
  414. package/pro/squads/squad-creator-pro/test-cases/an-extract-dna/test-case.yaml +105 -105
  415. package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/haiku-round-1.yaml +262 -262
  416. package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/opus-baseline.yaml +266 -266
  417. package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/qualification-report.yaml +94 -94
  418. package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/haiku-round-1.yaml +282 -282
  419. package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/opus-baseline.yaml +470 -470
  420. package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/qualification-report.yaml +106 -106
  421. package/pro/squads/squad-creator-pro/test-cases/collect-sources/test-case.yaml +105 -105
  422. package/pro/squads/squad-creator-pro/test-cases/create-task/test-case.yaml +104 -104
  423. package/pro/squads/squad-creator-pro/test-cases/cross-provider/DASHBOARD.yaml +11 -11
  424. package/pro/squads/squad-creator-pro/test-cases/pv-audit/test-case.yaml +106 -106
  425. package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/haiku-output.yaml +209 -209
  426. package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/opus-baseline.yaml +96 -96
  427. package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/sonnet-output.yaml +30 -30
  428. package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/test-case.yaml +129 -129
  429. package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/comparison-round-1.yaml +242 -242
  430. package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/haiku-round-1.yaml +393 -393
  431. package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/opus-baseline.yaml +488 -488
  432. package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/qualification-report.yaml +74 -74
  433. package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/haiku-round-1.yaml +292 -292
  434. package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/opus-baseline.yaml +603 -603
  435. package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/qualification-report.yaml +97 -97
  436. package/pro/squads/squad-creator-pro/test-cases/smoke-test-model-routing/test-case.yaml +100 -100
  437. package/pro/squads/squad-creator-pro/test-cases/upgrade-squad/test-case.yaml +106 -106
  438. package/pro/squads/squad-creator-pro/test-cases/validate-squad/comparison-round-1.yaml +223 -223
  439. package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-1-MINE.yaml +36 -36
  440. package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-1.yaml +193 -193
  441. package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-2.yaml +303 -303
  442. package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-3-v4-task.yaml +149 -149
  443. package/pro/squads/squad-creator-pro/test-cases/validate-squad/opus-baseline.yaml +529 -529
  444. package/pro/squads/squad-creator-pro/test-cases/validate-squad/opus-round-3-v4-task.yaml +132 -132
  445. package/pro/squads/squad-creator-pro/test-cases/validate-squad/qualification-report.yaml +104 -104
  446. package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/haiku-output-v2-calibrated.yaml +200 -200
  447. package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/haiku-output.yaml +183 -183
  448. package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/opus-baseline.yaml +112 -112
  449. package/pro/squads/squad-creator-pro/workflows/create-squad.yaml +348 -348
  450. package/pro/squads/squad-creator-pro/workflows/modules/module-discovery.yaml +16 -16
  451. package/pro/squads/squad-creator-pro/workflows/modules/module-integration.yaml +16 -16
  452. package/pro/squads/squad-creator-pro/workflows/modules/module-quality-gates.yaml +15 -15
  453. package/pro/squads/squad-creator-pro/workflows/wf-brownfield-upgrade-squad.yaml +46 -46
  454. package/pro/squads/squad-creator-pro/workflows/wf-context-aware-create-squad.yaml +47 -47
  455. package/pro/squads/squad-creator-pro/workflows/wf-create-squad.yaml +1619 -1619
  456. package/pro/squads/squad-creator-pro/workflows/wf-cross-provider-qualification.yaml +711 -711
  457. package/pro/squads/squad-creator-pro/workflows/wf-model-tier-qualification.yaml +800 -800
  458. package/pro/squads/squad-creator-pro/workflows/wf-optimize-squad.yaml +684 -684
  459. package/scripts/check-markdown-links.py +352 -352
  460. package/scripts/dashboard-parallel-dev.sh +0 -0
  461. package/scripts/dashboard-parallel-phase3.sh +0 -0
  462. package/scripts/dashboard-parallel-phase4.sh +0 -0
  463. package/scripts/install-monitor-hooks.sh +0 -0
  464. package/.claude/hooks/code-intel-pretool.cjs +0 -107
  465. package/docs/guides/aios-workflows/README.md +0 -247
  466. package/docs/guides/aios-workflows/bob-orchestrator-workflow.md +0 -1536
  467. package/scripts/glue/README.md +0 -355
  468. package/scripts/glue/compose-agent-prompt.cjs +0 -362
@@ -1,582 +1,582 @@
1
- # Atomic Design Refactoring Rules
2
-
3
- > Validation rules and best practices for Atomic Design refactoring.
4
- > Based on 18+ refactored components with 91% average reduction.
5
- >
6
- > **v2.0 - Jan/2026:** Adicionados gates anti-over-engineering após análise mostrar +111% código em alguns casos.
7
-
8
- ---
9
-
10
- ## ⛔ GATES ANTI-OVER-ENGINEERING (LER PRIMEIRO!)
11
-
12
- > **LIÇÃO JAN/2026:** Atomizamos 22 componentes. Em alguns casos, FragmentsTab foi de 475 → 1003 linhas (+111%) com 73% dos hooks sem reuso externo.
13
-
14
- ### GATE 0: Devo Atomizar?
15
-
16
- | Linhas | useState | Decisão |
17
- |--------|----------|---------|
18
- | >800 | qualquer | **SIM** - atomizar |
19
- | 500-800 | >7 | **SIM** - atomizar |
20
- | 500-800 | ≤7 | **TALVEZ** - só se hooks serão reusados |
21
- | <500 | qualquer | **NÃO** - organizar inline |
22
-
23
- ### GATE 1: Antes de Criar Cada Hook
24
-
25
- ```
26
- PERGUNTA OBRIGATÓRIA: Esse hook será usado em OUTRO componente?
27
-
28
- SE SIM → criar o hook (listar onde será usado)
29
- SE NÃO → NÃO criar, manter useState inline com comentários organizados
30
- ```
31
-
32
- **Exemplo de useState inline organizado (melhor que hook órfão):**
33
- ```typescript
34
- const MyComponent = () => {
35
- // === STATE: Data ===
36
- const { data, isLoading } = useMyData(id);
37
-
38
- // === STATE: UI ===
39
- const [selectedId, setSelectedId] = useState<string | null>(null);
40
- const [isSheetOpen, setIsSheetOpen] = useState(false);
41
-
42
- // === STATE: Filters ===
43
- const [search, setSearch] = useState('');
44
- const filteredData = useMemo(() => data?.filter(...), [data, search]);
45
-
46
- // ... resto
47
- };
48
- ```
49
-
50
- ### GATE 2: Validação Final (OBRIGATÓRIO)
51
-
52
- ```bash
53
- # Após terminar, verificar linhas TOTAIS
54
- find {pasta-criada} -name "*.ts" -o -name "*.tsx" | xargs wc -l | tail -1
55
-
56
- # Se linhas_depois > linhas_antes → FALHA, simplificar ou reverter
57
- ```
58
-
59
- | Métrica | Limite | Se Falhar |
60
- |---------|--------|-----------|
61
- | Linhas totais | ≤ original | Simplificar |
62
- | Arquivos | ≤7 por feature | Consolidar |
63
- | Hooks órfãos | 0 | Mover inline |
64
-
65
- ---
66
-
67
- ## Required Rules (MUST)
68
-
69
- ### 1. Line Limits
70
-
71
- | Type | Max | Ideal |
72
- |------|--------|-------|
73
- | Template (orchestrator) | **100** | 50-80 |
74
- | Organism | 200 | 100-150 |
75
- | Molecule | 100 | 50-80 |
76
- | Hook | 150 | 80-120 |
77
- | types.ts | No limit | - |
78
- | data/*.ts | No limit | - |
79
-
80
- **Validation:**
81
- ```bash
82
- # Check largest file (except types.ts and data/)
83
- find . -name "*.tsx" -o -name "*.ts" | grep -v types.ts | grep -v /data/ | xargs wc -l | sort -rn | head -5
84
- ```
85
-
86
- ### 2. Folder Structure
87
-
88
- ```
89
- {domain}/{feature}/
90
- ├── types.ts # REQUIRED
91
- ├── index.ts # REQUIRED
92
- ├── {Feature}Template.tsx # REQUIRED (orchestrator)
93
- ├── hooks/
94
- │ └── index.ts # REQUIRED if has hooks
95
- ├── molecules/
96
- │ └── index.ts # REQUIRED if has molecules
97
- └── organisms/
98
- └── index.ts # REQUIRED
99
- ```
100
-
101
- ### 3. Naming Conventions
102
-
103
- | Type | Pattern | Example |
104
- |------|---------|---------|
105
- | Template | `{Feature}Template.tsx` | `CoursesTemplate.tsx` |
106
- | Organism | `{Feature}{Type}.tsx` | `CoursesListView.tsx` |
107
- | Molecule | `{Name}.tsx` | `StatCard.tsx` |
108
- | Hook (data) | `use{Feature}Data.ts` | `useCoursesData.ts` |
109
- | Hook (filters) | `use{Feature}Filters.ts` | `useCoursesFilters.ts` |
110
- | Hook (dialog) | `use{Name}Dialog.ts` | `useCreateDialog.ts` |
111
- | Types | `types.ts` | `types.ts` |
112
- | Index | `index.ts` | `index.ts` |
113
-
114
- ### 4. Required Extraction
115
-
116
- **ALWAYS extract:**
117
- - [ ] `render{X}()` → `{X}View.tsx` or `{X}Section.tsx`
118
- - [ ] `useState` grouped by concern → custom hook
119
- - [ ] Color/icon configs → `types.ts`
120
- - [ ] Mock/static data → `data/`
121
-
122
- ### 5. TypeScript
123
-
124
- - [ ] `npx tsc --noEmit` must pass with 0 errors
125
- - [ ] No `any` types (except when unavoidable)
126
- - [ ] Props typed with interfaces in `types.ts`
127
- - [ ] Hooks with explicit or inferred return type
128
-
129
- ### 6. Types Consistency
130
-
131
- **RULE:** Every type imported in `data/*.ts` MUST exist in `types.ts`
132
-
133
- ```typescript
134
- // ❌ WRONG - import type that doesn't exist
135
- // data/my-data.ts
136
- import type { FaqItem, CourseModule } from '../types';
137
- // but types.ts doesn't have FaqItem or CourseModule → ERROR!
138
-
139
- // ✅ CORRECT - types.ts has all interfaces
140
- // types.ts
141
- export interface FaqItem { ... }
142
- export interface CourseModule { ... }
143
-
144
- // data/my-data.ts
145
- import type { FaqItem, CourseModule } from '../types'; // OK!
146
- ```
147
-
148
- **Validation:**
149
- ```bash
150
- # Check imported vs exported types
151
- grep -h "from '../types'" {folder}/data/*.ts
152
- grep "export interface\|export type" {folder}/types.ts
153
- ```
154
-
155
- ### 7. AppRoutes.tsx Updates
156
-
157
- **RULE:** If moving a Template to a new folder, MUST update `AppRoutes.tsx`
158
-
159
- ```typescript
160
- // If moving: books/templates/BookDetailTemplate.tsx
161
- // to: books/book-detail/BookDetailTemplate.tsx
162
-
163
- // BEFORE in AppRoutes.tsx:
164
- const BookDetailTemplate = React.lazy(() => import('./books/templates/BookDetailTemplate'));
165
-
166
- // AFTER in AppRoutes.tsx:
167
- const BookDetailTemplate = React.lazy(() => import('./books/book-detail/BookDetailTemplate'));
168
- ```
169
-
170
- **Validation:**
171
- ```bash
172
- # Check if import exists in new path
173
- grep "BookDetailTemplate" app/components/AppRoutes.tsx
174
- npm run typecheck | grep "Cannot find module"
175
- ```
176
-
177
- ### 8. Find ALL Importers
178
-
179
- **RULE:** BEFORE moving any file, find ALL files that import it.
180
-
181
- ```bash
182
- # Required before moving
183
- grep -rn "{ComponentName}" app/components/ --include="*.tsx" --include="*.ts" | grep "import"
184
- ```
185
-
186
- **Common error example:**
187
- ```
188
- # Component: CreatePersona
189
- # Subagent moved to: create-persona/CreatePersona.tsx
190
- # Subagent updated: views/index.ts (re-export)
191
- # Subagent FORGOT: PersonasTemplate.tsx (direct import)
192
- # RESULT: broken import!
193
- ```
194
-
195
- **Import checklist:**
196
- - [ ] views/index.ts (re-export)
197
- - [ ] {Parent}Template.tsx (direct import)
198
- - [ ] AppRoutes.tsx (lazy import)
199
- - [ ] Other components that use it
200
-
201
- ### 9. Preserve Hook Types
202
-
203
- **RULE:** Check EXACT types of hooks BEFORE creating types.ts
204
-
205
- ```typescript
206
- // ❌ WRONG - Create type without checking hook
207
- // types.ts
208
- interface Props {
209
- slug?: string; // useParams returns string | undefined
210
- }
211
- // hook/useData.ts
212
- const { data } = useCourseContents(slug); // useCourseContents expects string | null
213
- // RESULT: Type error!
214
-
215
- // ✅ CORRECT - Check hook first
216
- // 1. Open hook and see: useCourseContents(slug: string | null)
217
- // 2. In component, convert: useCourseContents(slug ?? null)
218
- ```
219
-
220
- **Validation BEFORE creating types.ts:**
221
- ```bash
222
- # See hook signature
223
- grep -A5 "export function use" app/hooks/useYYY.ts
224
- grep -A5 "export const use" app/hooks/useYYY.ts
225
- ```
226
-
227
- ### 10. Real TypeScript Validation
228
-
229
- **RULE:** Run REAL tsc and verify output, don't lie.
230
-
231
- ### 11. Type Definition Order
232
-
233
- **RULE:** Define types BEFORE using them in interfaces.
234
-
235
- ```typescript
236
- // ❌ WRONG - type used before defined
237
- export interface Props {
238
- onNavigate: (view: CourseView) => void; // CourseView not defined yet!
239
- }
240
- export type CourseView = 'overview' | 'research'; // Too late
241
-
242
- // ✅ CORRECT - type defined first
243
- export type CourseView = 'overview' | 'research';
244
- export interface Props {
245
- onNavigate: (view: CourseView) => void; // OK
246
- }
247
- ```
248
-
249
- ### 12. Nullable Consistency
250
-
251
- **RULE:** Match exact nullability between source and consumer.
252
-
253
- ```typescript
254
- // useParams returns: string | undefined
255
- // useCourseContents expects: string | null
256
-
257
- // ❌ WRONG - passing undefined to null parameter
258
- const { slug } = useParams();
259
- useCourseContents(slug); // Type error!
260
-
261
- // ✅ CORRECT - convert undefined to null
262
- const { slug } = useParams();
263
- useCourseContents(slug ?? null);
264
- ```
265
-
266
- **Common conversions:**
267
- | Source | Target | Fix |
268
- |--------|--------|-----|
269
- | `undefined` | `null` | `value ?? null` |
270
- | `null` | `undefined` | `value ?? undefined` |
271
- | `string \| undefined` | `string \| null` | `value ?? null` |
272
-
273
- ### 13. String to Union Type Casting
274
-
275
- **RULE:** When data comes from objects with string keys, cast to union type.
276
-
277
- ```typescript
278
- // Pipeline step has key as string
279
- const pipeline = [{ key: 'overview', ... }, { key: 'research', ... }];
280
-
281
- // But onNavigate expects union type
282
- onNavigate: (view: 'overview' | 'research') => void;
283
-
284
- // ❌ WRONG - string not assignable to union
285
- onClick={() => onNavigate(step.key)} // Type error!
286
-
287
- // ✅ CORRECT - cast to expected type
288
- onClick={() => onNavigate(step.key as CourseView)}
289
- ```
290
-
291
- ### 14. Props Consistency Across Components
292
-
293
- **RULE:** When parent and child share a callback, use SAME type.
294
-
295
- ```typescript
296
- // ❌ WRONG - different types for same callback
297
- // Parent:
298
- onNavigate: (view: 'overview' | 'research') => void;
299
- // Child:
300
- onNavigate: (view: string) => void; // Incompatible!
301
-
302
- // ✅ CORRECT - shared type
303
- export type CourseView = 'overview' | 'research';
304
-
305
- // Parent:
306
- onNavigate: (view: CourseView) => void;
307
- // Child:
308
- onNavigate: (view: CourseView) => void; // Same type
309
- ```
310
-
311
- ```bash
312
- # Required after refactoring
313
- npx tsc --noEmit 2>&1 | grep -E "(error|{ComponentName})" | head -30
314
-
315
- # If returns ANYTHING → FIX BEFORE RETURNING
316
- # DO NOT report "0 errors" without running this command
317
- ```
318
-
319
- **Common errors tsc detects:**
320
- | Error | Cause | Fix |
321
- |-------|-------|-----|
322
- | `Cannot find module` | Wrong import path | Update import |
323
- | `Type 'undefined' not assignable to 'null'` | Hook expects null | `value ?? null` |
324
- | `Type 'string' not assignable to union` | Generic type | Use exact union type |
325
- | `Property does not exist` | Incompatible type | Check original type |
326
-
327
- ---
328
-
329
- ## Recommended Rules (SHOULD)
330
-
331
- ### 1. Template Orchestrator
332
-
333
- The template should be ONLY composition:
334
-
335
- ```typescript
336
- // ✅ GOOD - composition only
337
- export const FeatureTemplate = () => {
338
- const data = useFeatureData();
339
- const filters = useFeatureFilters(data.items);
340
-
341
- return (
342
- <div>
343
- <FeatureHeader onRefresh={data.refetch} />
344
- <FeatureListView items={filters.filteredItems} />
345
- </div>
346
- );
347
- };
348
-
349
- // ❌ BAD - logic in template
350
- export const FeatureTemplate = () => {
351
- const [items, setItems] = useState([]);
352
-
353
- useEffect(() => {
354
- fetch('/api/items').then(r => r.json()).then(setItems);
355
- }, []);
356
-
357
- const filteredItems = items.filter(i => i.active);
358
-
359
- return (
360
- <div>
361
- {filteredItems.map(item => (
362
- <div key={item.id}>{item.name}</div>
363
- ))}
364
- </div>
365
- );
366
- };
367
- ```
368
-
369
- ### 2. Hooks
370
-
371
- - Um hook = um concern
372
- - Hooks podem usar outros hooks
373
- - Hooks NÃO devem renderizar JSX
374
- - Retornar objeto com estado + actions
375
-
376
- ```typescript
377
- // ✅ BOM
378
- export function useFilters(items) {
379
- const [search, setSearch] = useState('');
380
- const filtered = useMemo(() =>
381
- items.filter(i => i.name.includes(search)),
382
- [items, search]
383
- );
384
- return { search, setSearch, filtered };
385
- }
386
-
387
- // ❌ RUIM - mistura concerns
388
- export function useEverything() {
389
- const [items, setItems] = useState([]);
390
- const [search, setSearch] = useState('');
391
- const [isOpen, setIsOpen] = useState(false);
392
- // ... 20 estados diferentes
393
- }
394
- ```
395
-
396
- ### 3. Organisms
397
-
398
- - Recebe props, não busca dados
399
- - Pode ter estado de UI local (hover, expanded)
400
- - Não deve chamar APIs diretamente
401
- - Composição de molecules
402
-
403
- ```typescript
404
- // ✅ BOM - recebe props
405
- export const ListView = ({ items, onItemClick }: Props) => {
406
- return items.map(item => (
407
- <ItemCard key={item.id} item={item} onClick={() => onItemClick(item)} />
408
- ));
409
- };
410
-
411
- // ❌ RUIM - busca dados internamente
412
- export const ListView = () => {
413
- const [items, setItems] = useState([]);
414
- useEffect(() => { fetchItems().then(setItems); }, []);
415
- return items.map(item => <div>{item.name}</div>);
416
- };
417
- ```
418
-
419
- ### 4. Molecules
420
-
421
- - Stateless (ou estado de UI mínimo)
422
- - Reutilizáveis em múltiplos contextos
423
- - Props simples e bem definidas
424
- - Sem dependências de contexto específico
425
-
426
- ### 5. Shared Components
427
-
428
- Antes de criar um molecule/hook:
429
- 1. Verificar se existe em `shared/molecules/`
430
- 2. Verificar se existe em `shared/hooks/`
431
- 3. Se for genérico (usado em 3+ lugares) → criar em shared/
432
- 4. Se for específico do domínio → criar local
433
-
434
- ---
435
-
436
- ## Anti-Patterns (NEVER)
437
-
438
- ### 1. Imports Circulares
439
-
440
- ```typescript
441
- // ❌ NUNCA - hooks importando organisms
442
- // hooks/useData.ts
443
- import { ListView } from '../organisms/ListView'; // ERRADO!
444
-
445
- // ❌ NUNCA - molecules importando organisms
446
- // molecules/Card.ts
447
- import { Header } from '../organisms/Header'; // ERRADO!
448
- ```
449
-
450
- **Hierarquia correta:**
451
- ```
452
- types.ts ← hooks ← molecules ← organisms ← Template
453
- ```
454
-
455
- ### 2. Props Drilling Excessivo
456
-
457
- ```typescript
458
- // ❌ RUIM - passar 10+ props
459
- <ListView
460
- items={items}
461
- loading={loading}
462
- error={error}
463
- onRefresh={refetch}
464
- search={search}
465
- setSearch={setSearch}
466
- filter={filter}
467
- setFilter={setFilter}
468
- sortBy={sortBy}
469
- setSortBy={setSortBy}
470
- // ...
471
- />
472
-
473
- // ✅ MELHOR - agrupar em objetos
474
- <ListView
475
- data={{ items, loading, error }}
476
- filters={filtersState}
477
- actions={{ onRefresh, onItemClick }}
478
- />
479
- ```
480
-
481
- ### 3. Arquivos Gigantes
482
-
483
- ```typescript
484
- // ❌ NUNCA - organism com 500 linhas
485
- // Sinal que precisa ser dividido em múltiplos organisms
486
-
487
- // ❌ NUNCA - hook com 300 linhas
488
- // Sinal que precisa ser dividido em múltiplos hooks
489
- ```
490
-
491
- ### 4. Lógica no Render
492
-
493
- ```typescript
494
- // ❌ RUIM
495
- return (
496
- <div>
497
- {items.filter(i => i.active).sort((a,b) => a.name.localeCompare(b.name)).map(...)}
498
- </div>
499
- );
500
-
501
- // ✅ BOM - processar antes
502
- const sortedItems = useMemo(() =>
503
- items.filter(i => i.active).sort((a,b) => a.name.localeCompare(b.name)),
504
- [items]
505
- );
506
- return <div>{sortedItems.map(...)}</div>;
507
- ```
508
-
509
- ---
510
-
511
- ## Métricas de Sucesso
512
-
513
- ### Redução Esperada
514
-
515
- | Tier | Antes | Depois | Redução |
516
- |------|-------|--------|---------|
517
- | TIER 1 (>800) | 800-2000 | 50-200 | 85-95% |
518
- | TIER 2 (500-800) | 500-800 | 40-150 | 80-90% |
519
- | TIER 3 (300-500) | 300-500 | 30-100 | 70-80% |
520
-
521
- ### Número de Arquivos
522
-
523
- | Componente Original | Arquivos Esperados |
524
- |---------------------|-------------------|
525
- | 300-500 linhas | 8-12 arquivos |
526
- | 500-800 linhas | 12-18 arquivos |
527
- | 800-1500 linhas | 15-25 arquivos |
528
- | 1500+ linhas | 20-35 arquivos |
529
-
530
- ### Qualidade
531
-
532
- - [ ] 0 erros TypeScript
533
- - [ ] 0 imports circulares
534
- - [ ] 0 arquivos >200 linhas (exceto types/data)
535
- - [ ] 100% funcionalidade preservada
536
- - [ ] Barrel exports funcionando
537
-
538
- ---
539
-
540
- ## Final Validation Checklist
541
-
542
- ```markdown
543
- ## Refactoring Validation: {ComponentName}
544
-
545
- ### Structure
546
- - [ ] Folder created at `{domain}/{feature}/`
547
- - [ ] types.ts exists
548
- - [ ] index.ts with barrel exports
549
- - [ ] hooks/index.ts exists
550
- - [ ] organisms/index.ts exists
551
-
552
- ### Code
553
- - [ ] Template ≤200 lines
554
- - [ ] No file >200 lines (except types/data)
555
- - [ ] All render{X} extracted
556
- - [ ] All useState grouped in hooks
557
- - [ ] npx tsc --noEmit passes
558
-
559
- ### Functionality
560
- - [ ] Renders same as original
561
- - [ ] Interactions work
562
- - [ ] Edge cases handled (loading, empty, error)
563
-
564
- ### Metrics
565
- - Before: _____ lines
566
- - After: _____ lines (orchestrator)
567
- - Reduction: _____%
568
- - Files created: _____
569
- ```
570
-
571
- ---
572
-
573
- *Rules v1.3 - 2026-01-05*
574
- *Added rules 8-14 based on Wave 1.1 subagent errors:*
575
- *- Rule 8: Find ALL importers before moving*
576
- *- Rule 9: Preserve hook types (undefined vs null)*
577
- *- Rule 10: Real TypeScript validation*
578
- *- Rule 11: Type definition order (define before use)*
579
- *- Rule 12: Nullable consistency (undefined vs null)*
580
- *- Rule 13: String to union type casting*
581
- *- Rule 14: Props consistency across components*
582
- *Based on 18+ refactorings + Wave 1.1 error analysis*
1
+ # Atomic Design Refactoring Rules
2
+
3
+ > Validation rules and best practices for Atomic Design refactoring.
4
+ > Based on 18+ refactored components with 91% average reduction.
5
+ >
6
+ > **v2.0 - Jan/2026:** Adicionados gates anti-over-engineering após análise mostrar +111% código em alguns casos.
7
+
8
+ ---
9
+
10
+ ## ⛔ GATES ANTI-OVER-ENGINEERING (LER PRIMEIRO!)
11
+
12
+ > **LIÇÃO JAN/2026:** Atomizamos 22 componentes. Em alguns casos, FragmentsTab foi de 475 → 1003 linhas (+111%) com 73% dos hooks sem reuso externo.
13
+
14
+ ### GATE 0: Devo Atomizar?
15
+
16
+ | Linhas | useState | Decisão |
17
+ |--------|----------|---------|
18
+ | >800 | qualquer | **SIM** - atomizar |
19
+ | 500-800 | >7 | **SIM** - atomizar |
20
+ | 500-800 | ≤7 | **TALVEZ** - só se hooks serão reusados |
21
+ | <500 | qualquer | **NÃO** - organizar inline |
22
+
23
+ ### GATE 1: Antes de Criar Cada Hook
24
+
25
+ ```
26
+ PERGUNTA OBRIGATÓRIA: Esse hook será usado em OUTRO componente?
27
+
28
+ SE SIM → criar o hook (listar onde será usado)
29
+ SE NÃO → NÃO criar, manter useState inline com comentários organizados
30
+ ```
31
+
32
+ **Exemplo de useState inline organizado (melhor que hook órfão):**
33
+ ```typescript
34
+ const MyComponent = () => {
35
+ // === STATE: Data ===
36
+ const { data, isLoading } = useMyData(id);
37
+
38
+ // === STATE: UI ===
39
+ const [selectedId, setSelectedId] = useState<string | null>(null);
40
+ const [isSheetOpen, setIsSheetOpen] = useState(false);
41
+
42
+ // === STATE: Filters ===
43
+ const [search, setSearch] = useState('');
44
+ const filteredData = useMemo(() => data?.filter(...), [data, search]);
45
+
46
+ // ... resto
47
+ };
48
+ ```
49
+
50
+ ### GATE 2: Validação Final (OBRIGATÓRIO)
51
+
52
+ ```bash
53
+ # Após terminar, verificar linhas TOTAIS
54
+ find {pasta-criada} -name "*.ts" -o -name "*.tsx" | xargs wc -l | tail -1
55
+
56
+ # Se linhas_depois > linhas_antes → FALHA, simplificar ou reverter
57
+ ```
58
+
59
+ | Métrica | Limite | Se Falhar |
60
+ |---------|--------|-----------|
61
+ | Linhas totais | ≤ original | Simplificar |
62
+ | Arquivos | ≤7 por feature | Consolidar |
63
+ | Hooks órfãos | 0 | Mover inline |
64
+
65
+ ---
66
+
67
+ ## Required Rules (MUST)
68
+
69
+ ### 1. Line Limits
70
+
71
+ | Type | Max | Ideal |
72
+ |------|--------|-------|
73
+ | Template (orchestrator) | **100** | 50-80 |
74
+ | Organism | 200 | 100-150 |
75
+ | Molecule | 100 | 50-80 |
76
+ | Hook | 150 | 80-120 |
77
+ | types.ts | No limit | - |
78
+ | data/*.ts | No limit | - |
79
+
80
+ **Validation:**
81
+ ```bash
82
+ # Check largest file (except types.ts and data/)
83
+ find . -name "*.tsx" -o -name "*.ts" | grep -v types.ts | grep -v /data/ | xargs wc -l | sort -rn | head -5
84
+ ```
85
+
86
+ ### 2. Folder Structure
87
+
88
+ ```
89
+ {domain}/{feature}/
90
+ ├── types.ts # REQUIRED
91
+ ├── index.ts # REQUIRED
92
+ ├── {Feature}Template.tsx # REQUIRED (orchestrator)
93
+ ├── hooks/
94
+ │ └── index.ts # REQUIRED if has hooks
95
+ ├── molecules/
96
+ │ └── index.ts # REQUIRED if has molecules
97
+ └── organisms/
98
+ └── index.ts # REQUIRED
99
+ ```
100
+
101
+ ### 3. Naming Conventions
102
+
103
+ | Type | Pattern | Example |
104
+ |------|---------|---------|
105
+ | Template | `{Feature}Template.tsx` | `CoursesTemplate.tsx` |
106
+ | Organism | `{Feature}{Type}.tsx` | `CoursesListView.tsx` |
107
+ | Molecule | `{Name}.tsx` | `StatCard.tsx` |
108
+ | Hook (data) | `use{Feature}Data.ts` | `useCoursesData.ts` |
109
+ | Hook (filters) | `use{Feature}Filters.ts` | `useCoursesFilters.ts` |
110
+ | Hook (dialog) | `use{Name}Dialog.ts` | `useCreateDialog.ts` |
111
+ | Types | `types.ts` | `types.ts` |
112
+ | Index | `index.ts` | `index.ts` |
113
+
114
+ ### 4. Required Extraction
115
+
116
+ **ALWAYS extract:**
117
+ - [ ] `render{X}()` → `{X}View.tsx` or `{X}Section.tsx`
118
+ - [ ] `useState` grouped by concern → custom hook
119
+ - [ ] Color/icon configs → `types.ts`
120
+ - [ ] Mock/static data → `data/`
121
+
122
+ ### 5. TypeScript
123
+
124
+ - [ ] `npx tsc --noEmit` must pass with 0 errors
125
+ - [ ] No `any` types (except when unavoidable)
126
+ - [ ] Props typed with interfaces in `types.ts`
127
+ - [ ] Hooks with explicit or inferred return type
128
+
129
+ ### 6. Types Consistency
130
+
131
+ **RULE:** Every type imported in `data/*.ts` MUST exist in `types.ts`
132
+
133
+ ```typescript
134
+ // ❌ WRONG - import type that doesn't exist
135
+ // data/my-data.ts
136
+ import type { FaqItem, CourseModule } from '../types';
137
+ // but types.ts doesn't have FaqItem or CourseModule → ERROR!
138
+
139
+ // ✅ CORRECT - types.ts has all interfaces
140
+ // types.ts
141
+ export interface FaqItem { ... }
142
+ export interface CourseModule { ... }
143
+
144
+ // data/my-data.ts
145
+ import type { FaqItem, CourseModule } from '../types'; // OK!
146
+ ```
147
+
148
+ **Validation:**
149
+ ```bash
150
+ # Check imported vs exported types
151
+ grep -h "from '../types'" {folder}/data/*.ts
152
+ grep "export interface\|export type" {folder}/types.ts
153
+ ```
154
+
155
+ ### 7. AppRoutes.tsx Updates
156
+
157
+ **RULE:** If moving a Template to a new folder, MUST update `AppRoutes.tsx`
158
+
159
+ ```typescript
160
+ // If moving: books/templates/BookDetailTemplate.tsx
161
+ // to: books/book-detail/BookDetailTemplate.tsx
162
+
163
+ // BEFORE in AppRoutes.tsx:
164
+ const BookDetailTemplate = React.lazy(() => import('./books/templates/BookDetailTemplate'));
165
+
166
+ // AFTER in AppRoutes.tsx:
167
+ const BookDetailTemplate = React.lazy(() => import('./books/book-detail/BookDetailTemplate'));
168
+ ```
169
+
170
+ **Validation:**
171
+ ```bash
172
+ # Check if import exists in new path
173
+ grep "BookDetailTemplate" app/components/AppRoutes.tsx
174
+ npm run typecheck | grep "Cannot find module"
175
+ ```
176
+
177
+ ### 8. Find ALL Importers
178
+
179
+ **RULE:** BEFORE moving any file, find ALL files that import it.
180
+
181
+ ```bash
182
+ # Required before moving
183
+ grep -rn "{ComponentName}" app/components/ --include="*.tsx" --include="*.ts" | grep "import"
184
+ ```
185
+
186
+ **Common error example:**
187
+ ```
188
+ # Component: CreatePersona
189
+ # Subagent moved to: create-persona/CreatePersona.tsx
190
+ # Subagent updated: views/index.ts (re-export)
191
+ # Subagent FORGOT: PersonasTemplate.tsx (direct import)
192
+ # RESULT: broken import!
193
+ ```
194
+
195
+ **Import checklist:**
196
+ - [ ] views/index.ts (re-export)
197
+ - [ ] {Parent}Template.tsx (direct import)
198
+ - [ ] AppRoutes.tsx (lazy import)
199
+ - [ ] Other components that use it
200
+
201
+ ### 9. Preserve Hook Types
202
+
203
+ **RULE:** Check EXACT types of hooks BEFORE creating types.ts
204
+
205
+ ```typescript
206
+ // ❌ WRONG - Create type without checking hook
207
+ // types.ts
208
+ interface Props {
209
+ slug?: string; // useParams returns string | undefined
210
+ }
211
+ // hook/useData.ts
212
+ const { data } = useCourseContents(slug); // useCourseContents expects string | null
213
+ // RESULT: Type error!
214
+
215
+ // ✅ CORRECT - Check hook first
216
+ // 1. Open hook and see: useCourseContents(slug: string | null)
217
+ // 2. In component, convert: useCourseContents(slug ?? null)
218
+ ```
219
+
220
+ **Validation BEFORE creating types.ts:**
221
+ ```bash
222
+ # See hook signature
223
+ grep -A5 "export function use" app/hooks/useYYY.ts
224
+ grep -A5 "export const use" app/hooks/useYYY.ts
225
+ ```
226
+
227
+ ### 10. Real TypeScript Validation
228
+
229
+ **RULE:** Run REAL tsc and verify output, don't lie.
230
+
231
+ ### 11. Type Definition Order
232
+
233
+ **RULE:** Define types BEFORE using them in interfaces.
234
+
235
+ ```typescript
236
+ // ❌ WRONG - type used before defined
237
+ export interface Props {
238
+ onNavigate: (view: CourseView) => void; // CourseView not defined yet!
239
+ }
240
+ export type CourseView = 'overview' | 'research'; // Too late
241
+
242
+ // ✅ CORRECT - type defined first
243
+ export type CourseView = 'overview' | 'research';
244
+ export interface Props {
245
+ onNavigate: (view: CourseView) => void; // OK
246
+ }
247
+ ```
248
+
249
+ ### 12. Nullable Consistency
250
+
251
+ **RULE:** Match exact nullability between source and consumer.
252
+
253
+ ```typescript
254
+ // useParams returns: string | undefined
255
+ // useCourseContents expects: string | null
256
+
257
+ // ❌ WRONG - passing undefined to null parameter
258
+ const { slug } = useParams();
259
+ useCourseContents(slug); // Type error!
260
+
261
+ // ✅ CORRECT - convert undefined to null
262
+ const { slug } = useParams();
263
+ useCourseContents(slug ?? null);
264
+ ```
265
+
266
+ **Common conversions:**
267
+ | Source | Target | Fix |
268
+ |--------|--------|-----|
269
+ | `undefined` | `null` | `value ?? null` |
270
+ | `null` | `undefined` | `value ?? undefined` |
271
+ | `string \| undefined` | `string \| null` | `value ?? null` |
272
+
273
+ ### 13. String to Union Type Casting
274
+
275
+ **RULE:** When data comes from objects with string keys, cast to union type.
276
+
277
+ ```typescript
278
+ // Pipeline step has key as string
279
+ const pipeline = [{ key: 'overview', ... }, { key: 'research', ... }];
280
+
281
+ // But onNavigate expects union type
282
+ onNavigate: (view: 'overview' | 'research') => void;
283
+
284
+ // ❌ WRONG - string not assignable to union
285
+ onClick={() => onNavigate(step.key)} // Type error!
286
+
287
+ // ✅ CORRECT - cast to expected type
288
+ onClick={() => onNavigate(step.key as CourseView)}
289
+ ```
290
+
291
+ ### 14. Props Consistency Across Components
292
+
293
+ **RULE:** When parent and child share a callback, use SAME type.
294
+
295
+ ```typescript
296
+ // ❌ WRONG - different types for same callback
297
+ // Parent:
298
+ onNavigate: (view: 'overview' | 'research') => void;
299
+ // Child:
300
+ onNavigate: (view: string) => void; // Incompatible!
301
+
302
+ // ✅ CORRECT - shared type
303
+ export type CourseView = 'overview' | 'research';
304
+
305
+ // Parent:
306
+ onNavigate: (view: CourseView) => void;
307
+ // Child:
308
+ onNavigate: (view: CourseView) => void; // Same type
309
+ ```
310
+
311
+ ```bash
312
+ # Required after refactoring
313
+ npx tsc --noEmit 2>&1 | grep -E "(error|{ComponentName})" | head -30
314
+
315
+ # If returns ANYTHING → FIX BEFORE RETURNING
316
+ # DO NOT report "0 errors" without running this command
317
+ ```
318
+
319
+ **Common errors tsc detects:**
320
+ | Error | Cause | Fix |
321
+ |-------|-------|-----|
322
+ | `Cannot find module` | Wrong import path | Update import |
323
+ | `Type 'undefined' not assignable to 'null'` | Hook expects null | `value ?? null` |
324
+ | `Type 'string' not assignable to union` | Generic type | Use exact union type |
325
+ | `Property does not exist` | Incompatible type | Check original type |
326
+
327
+ ---
328
+
329
+ ## Recommended Rules (SHOULD)
330
+
331
+ ### 1. Template Orchestrator
332
+
333
+ The template should be ONLY composition:
334
+
335
+ ```typescript
336
+ // ✅ GOOD - composition only
337
+ export const FeatureTemplate = () => {
338
+ const data = useFeatureData();
339
+ const filters = useFeatureFilters(data.items);
340
+
341
+ return (
342
+ <div>
343
+ <FeatureHeader onRefresh={data.refetch} />
344
+ <FeatureListView items={filters.filteredItems} />
345
+ </div>
346
+ );
347
+ };
348
+
349
+ // ❌ BAD - logic in template
350
+ export const FeatureTemplate = () => {
351
+ const [items, setItems] = useState([]);
352
+
353
+ useEffect(() => {
354
+ fetch('/api/items').then(r => r.json()).then(setItems);
355
+ }, []);
356
+
357
+ const filteredItems = items.filter(i => i.active);
358
+
359
+ return (
360
+ <div>
361
+ {filteredItems.map(item => (
362
+ <div key={item.id}>{item.name}</div>
363
+ ))}
364
+ </div>
365
+ );
366
+ };
367
+ ```
368
+
369
+ ### 2. Hooks
370
+
371
+ - Um hook = um concern
372
+ - Hooks podem usar outros hooks
373
+ - Hooks NÃO devem renderizar JSX
374
+ - Retornar objeto com estado + actions
375
+
376
+ ```typescript
377
+ // ✅ BOM
378
+ export function useFilters(items) {
379
+ const [search, setSearch] = useState('');
380
+ const filtered = useMemo(() =>
381
+ items.filter(i => i.name.includes(search)),
382
+ [items, search]
383
+ );
384
+ return { search, setSearch, filtered };
385
+ }
386
+
387
+ // ❌ RUIM - mistura concerns
388
+ export function useEverything() {
389
+ const [items, setItems] = useState([]);
390
+ const [search, setSearch] = useState('');
391
+ const [isOpen, setIsOpen] = useState(false);
392
+ // ... 20 estados diferentes
393
+ }
394
+ ```
395
+
396
+ ### 3. Organisms
397
+
398
+ - Recebe props, não busca dados
399
+ - Pode ter estado de UI local (hover, expanded)
400
+ - Não deve chamar APIs diretamente
401
+ - Composição de molecules
402
+
403
+ ```typescript
404
+ // ✅ BOM - recebe props
405
+ export const ListView = ({ items, onItemClick }: Props) => {
406
+ return items.map(item => (
407
+ <ItemCard key={item.id} item={item} onClick={() => onItemClick(item)} />
408
+ ));
409
+ };
410
+
411
+ // ❌ RUIM - busca dados internamente
412
+ export const ListView = () => {
413
+ const [items, setItems] = useState([]);
414
+ useEffect(() => { fetchItems().then(setItems); }, []);
415
+ return items.map(item => <div>{item.name}</div>);
416
+ };
417
+ ```
418
+
419
+ ### 4. Molecules
420
+
421
+ - Stateless (ou estado de UI mínimo)
422
+ - Reutilizáveis em múltiplos contextos
423
+ - Props simples e bem definidas
424
+ - Sem dependências de contexto específico
425
+
426
+ ### 5. Shared Components
427
+
428
+ Antes de criar um molecule/hook:
429
+ 1. Verificar se existe em `shared/molecules/`
430
+ 2. Verificar se existe em `shared/hooks/`
431
+ 3. Se for genérico (usado em 3+ lugares) → criar em shared/
432
+ 4. Se for específico do domínio → criar local
433
+
434
+ ---
435
+
436
+ ## Anti-Patterns (NEVER)
437
+
438
+ ### 1. Imports Circulares
439
+
440
+ ```typescript
441
+ // ❌ NUNCA - hooks importando organisms
442
+ // hooks/useData.ts
443
+ import { ListView } from '../organisms/ListView'; // ERRADO!
444
+
445
+ // ❌ NUNCA - molecules importando organisms
446
+ // molecules/Card.ts
447
+ import { Header } from '../organisms/Header'; // ERRADO!
448
+ ```
449
+
450
+ **Hierarquia correta:**
451
+ ```
452
+ types.ts ← hooks ← molecules ← organisms ← Template
453
+ ```
454
+
455
+ ### 2. Props Drilling Excessivo
456
+
457
+ ```typescript
458
+ // ❌ RUIM - passar 10+ props
459
+ <ListView
460
+ items={items}
461
+ loading={loading}
462
+ error={error}
463
+ onRefresh={refetch}
464
+ search={search}
465
+ setSearch={setSearch}
466
+ filter={filter}
467
+ setFilter={setFilter}
468
+ sortBy={sortBy}
469
+ setSortBy={setSortBy}
470
+ // ...
471
+ />
472
+
473
+ // ✅ MELHOR - agrupar em objetos
474
+ <ListView
475
+ data={{ items, loading, error }}
476
+ filters={filtersState}
477
+ actions={{ onRefresh, onItemClick }}
478
+ />
479
+ ```
480
+
481
+ ### 3. Arquivos Gigantes
482
+
483
+ ```typescript
484
+ // ❌ NUNCA - organism com 500 linhas
485
+ // Sinal que precisa ser dividido em múltiplos organisms
486
+
487
+ // ❌ NUNCA - hook com 300 linhas
488
+ // Sinal que precisa ser dividido em múltiplos hooks
489
+ ```
490
+
491
+ ### 4. Lógica no Render
492
+
493
+ ```typescript
494
+ // ❌ RUIM
495
+ return (
496
+ <div>
497
+ {items.filter(i => i.active).sort((a,b) => a.name.localeCompare(b.name)).map(...)}
498
+ </div>
499
+ );
500
+
501
+ // ✅ BOM - processar antes
502
+ const sortedItems = useMemo(() =>
503
+ items.filter(i => i.active).sort((a,b) => a.name.localeCompare(b.name)),
504
+ [items]
505
+ );
506
+ return <div>{sortedItems.map(...)}</div>;
507
+ ```
508
+
509
+ ---
510
+
511
+ ## Métricas de Sucesso
512
+
513
+ ### Redução Esperada
514
+
515
+ | Tier | Antes | Depois | Redução |
516
+ |------|-------|--------|---------|
517
+ | TIER 1 (>800) | 800-2000 | 50-200 | 85-95% |
518
+ | TIER 2 (500-800) | 500-800 | 40-150 | 80-90% |
519
+ | TIER 3 (300-500) | 300-500 | 30-100 | 70-80% |
520
+
521
+ ### Número de Arquivos
522
+
523
+ | Componente Original | Arquivos Esperados |
524
+ |---------------------|-------------------|
525
+ | 300-500 linhas | 8-12 arquivos |
526
+ | 500-800 linhas | 12-18 arquivos |
527
+ | 800-1500 linhas | 15-25 arquivos |
528
+ | 1500+ linhas | 20-35 arquivos |
529
+
530
+ ### Qualidade
531
+
532
+ - [ ] 0 erros TypeScript
533
+ - [ ] 0 imports circulares
534
+ - [ ] 0 arquivos >200 linhas (exceto types/data)
535
+ - [ ] 100% funcionalidade preservada
536
+ - [ ] Barrel exports funcionando
537
+
538
+ ---
539
+
540
+ ## Final Validation Checklist
541
+
542
+ ```markdown
543
+ ## Refactoring Validation: {ComponentName}
544
+
545
+ ### Structure
546
+ - [ ] Folder created at `{domain}/{feature}/`
547
+ - [ ] types.ts exists
548
+ - [ ] index.ts with barrel exports
549
+ - [ ] hooks/index.ts exists
550
+ - [ ] organisms/index.ts exists
551
+
552
+ ### Code
553
+ - [ ] Template ≤200 lines
554
+ - [ ] No file >200 lines (except types/data)
555
+ - [ ] All render{X} extracted
556
+ - [ ] All useState grouped in hooks
557
+ - [ ] npx tsc --noEmit passes
558
+
559
+ ### Functionality
560
+ - [ ] Renders same as original
561
+ - [ ] Interactions work
562
+ - [ ] Edge cases handled (loading, empty, error)
563
+
564
+ ### Metrics
565
+ - Before: _____ lines
566
+ - After: _____ lines (orchestrator)
567
+ - Reduction: _____%
568
+ - Files created: _____
569
+ ```
570
+
571
+ ---
572
+
573
+ *Rules v1.3 - 2026-01-05*
574
+ *Added rules 8-14 based on Wave 1.1 subagent errors:*
575
+ *- Rule 8: Find ALL importers before moving*
576
+ *- Rule 9: Preserve hook types (undefined vs null)*
577
+ *- Rule 10: Real TypeScript validation*
578
+ *- Rule 11: Type definition order (define before use)*
579
+ *- Rule 12: Nullable consistency (undefined vs null)*
580
+ *- Rule 13: String to union type casting*
581
+ *- Rule 14: Props consistency across components*
582
+ *Based on 18+ refactorings + Wave 1.1 error analysis*