iron-edge 1.2.0 → 2.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 (660) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +114 -25
  3. package/agents/iron-3d.md +1 -1
  4. package/agents/iron-animations.md +3 -2
  5. package/agents/iron-auditor.md +175 -0
  6. package/agents/iron-brand.md +3 -2
  7. package/agents/iron-ceo.md +143 -0
  8. package/agents/iron-claude.md +54 -0
  9. package/agents/iron-clone.md +87 -0
  10. package/agents/iron-cloning.md +21 -3
  11. package/agents/iron-commercial.md +3 -2
  12. package/agents/iron-community.md +1 -1
  13. package/agents/iron-content.md +3 -2
  14. package/agents/iron-copy.md +3 -2
  15. package/agents/iron-council.md +3 -2
  16. package/agents/iron-courses.md +3 -2
  17. package/agents/iron-cyber.md +3 -2
  18. package/agents/iron-design.md +3 -2
  19. package/agents/iron-eng.md +138 -0
  20. package/agents/iron-finance.md +3 -2
  21. package/agents/iron-forge.md +147 -0
  22. package/agents/iron-growth.md +3 -2
  23. package/agents/iron-install.md +15 -13
  24. package/agents/iron-paidmedia.md +3 -2
  25. package/agents/iron-premium.md +146 -0
  26. package/agents/iron-product.md +3 -2
  27. package/agents/iron-research.md +3 -2
  28. package/agents/iron-search.md +82 -0
  29. package/agents/iron-shopify.md +80 -4
  30. package/agents/iron-spy.md +1 -1
  31. package/agents/iron-storytelling.md +3 -2
  32. package/agents/iron-video.md +1 -1
  33. package/agents/lp-cinematico.md +2 -2
  34. package/agents/xq-advisory.md +1 -1
  35. package/agents/xq-brand.md +1 -1
  36. package/agents/xq-clevel.md +1 -1
  37. package/agents/xq-codecore.md +19 -19
  38. package/agents/xq-copy.md +1 -1
  39. package/agents/xq-copymaster.md +1 -1
  40. package/agents/xq-cyber.md +1 -1
  41. package/agents/xq-data.md +1 -1
  42. package/agents/xq-design.md +1 -1
  43. package/agents/xq-hormozi.md +2 -2
  44. package/agents/xq-movement.md +1 -1
  45. package/agents/xq-storytelling.md +1 -1
  46. package/agents/xq-traffic.md +1 -1
  47. package/bin/iron-edge.js +74 -0
  48. package/docs/2026-08-21-como-pedir-software-ao-iron.md +62 -0
  49. package/docs/2026-08-21-skill-gate-fonte-unica.md +70 -0
  50. package/installer/install-mac.sh +52 -0
  51. package/installer/install-windows.ps1 +65 -0
  52. package/installer/install.js +518 -0
  53. package/iron-routing-map.md +276 -0
  54. package/package.json +14 -7
  55. package/skills/anotar/SKILL.md +50 -0
  56. package/skills/brandkit/SKILL.md +152 -0
  57. package/skills/clone-distill/SKILL.md +45 -0
  58. package/skills/clone-distill/scripts/distill.mjs +144 -0
  59. package/skills/clone-inventory/SKILL.md +51 -0
  60. package/skills/clone-inventory/package-lock.json +307 -0
  61. package/skills/clone-inventory/package.json +1 -0
  62. package/skills/clone-inventory/scripts/inventory.mjs +336 -0
  63. package/skills/clone-organize/SKILL.md +107 -0
  64. package/skills/clone-organize/package-lock.json +307 -0
  65. package/skills/clone-organize/package.json +1 -0
  66. package/skills/clone-organize/scripts/verify-visual.mjs +79 -0
  67. package/skills/clone-site/SKILL.md +104 -0
  68. package/skills/clone-site/package-lock.json +360 -0
  69. package/skills/clone-site/package.json +12 -0
  70. package/skills/clone-site/reference/lessons.md +131 -0
  71. package/skills/clone-site/reference/workflow.md +211 -0
  72. package/skills/clone-site/scripts/capture.mjs +507 -0
  73. package/skills/clone-site/scripts/clone.sh +166 -0
  74. package/skills/clone-site/scripts/fix_paths.py +118 -0
  75. package/skills/clone-site/scripts/serve.py +129 -0
  76. package/skills/clone-site/scripts/verify.mjs +126 -0
  77. package/skills/clone-site/scripts/wget_fallback.sh +38 -0
  78. package/skills/clone-transplant/SKILL.md +50 -0
  79. package/skills/clone-transplant/scripts/transplant.mjs +299 -0
  80. package/skills/conectar-mcp/SKILL.md +38 -0
  81. package/skills/escada/SKILL.md +62 -0
  82. package/skills/faxina/SKILL.md +34 -0
  83. package/skills/gate/SKILL.md +318 -0
  84. package/skills/gate/hooks/gate-dirty.sh +40 -0
  85. package/skills/gate/hooks/gate-stop.sh +31 -0
  86. package/skills/gate/preflight.py +132 -0
  87. package/skills/lp-cinematico/SKILL.md +5 -0
  88. package/skills/roteiro-video/SKILL.md +5 -0
  89. package/skills/salvar/SKILL.md +80 -0
  90. package/squads/squad-animations/README.md +18 -6
  91. package/squads/squad-animations/agents/animation-interpreter.md +9 -0
  92. package/squads/squad-animations/agents/animation-performance-engineer.md +9 -0
  93. package/squads/squad-animations/agents/animations-orqx.md +11 -2
  94. package/squads/squad-animations/agents/css-motion-artist.md +9 -0
  95. package/squads/squad-animations/agents/generative-particle-engineer.md +9 -0
  96. package/squads/squad-animations/agents/motion-choreographer.md +9 -0
  97. package/squads/squad-animations/agents/scroll-narrative-engineer.md +9 -0
  98. package/squads/squad-animations/agents/shader-artist.md +9 -0
  99. package/squads/squad-animations/agents/threejs-architect.md +9 -0
  100. package/squads/squad-animations/knowledge-base/chrome-brain-integration.md +17 -43
  101. package/squads/squad-animations/squad.yaml +21 -7
  102. package/squads/squad-brand/README.md +9 -3
  103. package/squads/squad-brand/agents/al-ries.md +9 -0
  104. package/squads/squad-brand/agents/alina-wheeler.md +9 -0
  105. package/squads/squad-brand/agents/archetype-consultant.md +9 -0
  106. package/squads/squad-brand/agents/brand-archetype-strategist.md +9 -0
  107. package/squads/squad-brand/agents/brand-auditor.md +9 -0
  108. package/squads/squad-brand/agents/brand-collateral-designer.md +9 -0
  109. package/squads/squad-brand/agents/brand-compiler.md +9 -0
  110. package/squads/squad-brand/agents/brand-creative-engineer.md +9 -0
  111. package/squads/squad-brand/agents/brand-culture-architect.md +9 -0
  112. package/squads/squad-brand/agents/brand-growth-strategist.md +9 -0
  113. package/squads/squad-brand/agents/brand-identity-designer.md +9 -0
  114. package/squads/squad-brand/agents/brand-motion-vfx.md +9 -0
  115. package/squads/squad-brand/agents/brand-naming-specialist.md +9 -0
  116. package/squads/squad-brand/agents/brand-orqx.md +12 -3
  117. package/squads/squad-brand/agents/brand-positioning-strategist.md +9 -0
  118. package/squads/squad-brand/agents/brand-sonic-designer.md +9 -0
  119. package/squads/squad-brand/agents/brand-strategist.md +9 -0
  120. package/squads/squad-brand/agents/brand-system-architect.md +9 -0
  121. package/squads/squad-brand/agents/byron-sharp.md +9 -0
  122. package/squads/squad-brand/agents/david-aaker.md +9 -0
  123. package/squads/squad-brand/agents/denise-yohn.md +9 -0
  124. package/squads/squad-brand/agents/domain-scout.md +9 -0
  125. package/squads/squad-brand/agents/donald-miller.md +9 -0
  126. package/squads/squad-brand/agents/emily-heyward.md +9 -0
  127. package/squads/squad-brand/agents/jean-noel-kapferer.md +9 -0
  128. package/squads/squad-brand/agents/kevin-keller.md +9 -0
  129. package/squads/squad-brand/agents/marty-neumeier.md +9 -0
  130. package/squads/squad-brand/agents/miller-sticky-brand.md +9 -0
  131. package/squads/squad-brand/agents/naming-strategist.md +9 -0
  132. package/squads/squad-brand/knowledge-base/chrome-brain-integration.md +17 -35
  133. package/squads/squad-brand/squad.yaml +43 -10
  134. package/squads/squad-brand/tasks/create-components.md +1 -1
  135. package/squads/squad-brand/tasks/create-dark-mode.md +1 -1
  136. package/squads/squad-brand/tasks/create-token-system.md +1 -1
  137. package/squads/squad-brand/tasks/define-grid-system.md +1 -1
  138. package/squads/squad-brand/tasks/design-dynamic-identity-system.md +1 -1
  139. package/squads/squad-brand/tasks/export-tokens.md +1 -1
  140. package/squads/squad-brand/templates/client-delivery-template.md +1 -1
  141. package/squads/squad-claude/README.md +19 -7
  142. package/squads/squad-claude/agents/claude-orqx.md +13 -4
  143. package/squads/squad-claude/agents/config-engineer.md +9 -0
  144. package/squads/squad-claude/agents/hooks-architect.md +9 -0
  145. package/squads/squad-claude/agents/mcp-integrator.md +9 -0
  146. package/squads/squad-claude/agents/project-integrator.md +9 -0
  147. package/squads/squad-claude/agents/roadmap-sentinel.md +9 -0
  148. package/squads/squad-claude/agents/skill-craftsman.md +9 -0
  149. package/squads/squad-claude/agents/swarm-orqx.md +9 -0
  150. package/squads/squad-claude/checklists/agent-readiness-checklist.md +1 -2
  151. package/squads/squad-claude/checklists/claude-setup-audit-checklist.md +1 -1
  152. package/squads/squad-claude/checklists/prompt-quality-checklist.md +0 -5
  153. package/squads/squad-claude/knowledge-base/chrome-brain-integration.md +17 -42
  154. package/squads/squad-claude/knowledge-base/claude-code-configuration-reference.md +6 -11
  155. package/squads/squad-claude/knowledge-base/claude-code-hooks-reference.md +28 -19
  156. package/squads/squad-claude/knowledge-base/claude-code-internals-deep.md +16 -2
  157. package/squads/squad-claude/knowledge-base/claude-code-tools-reference.md +2 -2
  158. package/squads/squad-claude/knowledge-base/context-window-optimization.md +3 -3
  159. package/squads/squad-claude/knowledge-base/knowledge-architecture-reference.md +3 -3
  160. package/squads/squad-claude/knowledge-base/mcp-integration-patterns.md +1 -1
  161. package/squads/squad-claude/knowledge-base/memory-systems-reference.md +6 -6
  162. package/squads/squad-claude/knowledge-base/obsidian-claude-integration.md +5 -5
  163. package/squads/squad-claude/knowledge-base/retrieval-augmented-generation.md +3 -3
  164. package/squads/squad-claude/knowledge-base/skill-creation-patterns.md +10 -10
  165. package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +10 -10
  166. package/squads/squad-claude/squad.yaml +20 -7
  167. package/squads/squad-claude/templates/agent-definition-template.md +1 -1
  168. package/squads/squad-cloning/README.md +22 -6
  169. package/squads/squad-cloning/agents/agent-forger.md +36 -3
  170. package/squads/squad-cloning/agents/cloning-orqx.md +39 -4
  171. package/squads/squad-cloning/agents/cognitive-extractor.md +33 -0
  172. package/squads/squad-cloning/agents/content-capturer.md +33 -0
  173. package/squads/squad-cloning/agents/kb-architect.md +33 -0
  174. package/squads/squad-cloning/agents/mind-synthesizer.md +33 -0
  175. package/squads/squad-cloning/agents/source-hunter.md +33 -0
  176. package/squads/squad-cloning/agents/squad-assembler.md +35 -2
  177. package/squads/squad-cloning/checklists/clone-completeness-checklist.md +1 -1
  178. package/squads/squad-cloning/checklists/pre-deploy-checklist.md +3 -3
  179. package/squads/squad-cloning/knowledge-base/agent-generation-guide.md +4 -4
  180. package/squads/squad-cloning/knowledge-base/chrome-brain-integration.md +17 -43
  181. package/squads/squad-cloning/knowledge-base/clone-tier-standards.md +1 -1
  182. package/squads/squad-cloning/knowledge-base/cross-squad-deployment.md +2 -2
  183. package/squads/squad-cloning/knowledge-base/ethical-guidelines.md +2 -2
  184. package/squads/squad-cloning/knowledge-base/multi-agent-deployment-patterns.md +1 -1
  185. package/squads/squad-cloning/knowledge-base/skill-standard-for-clones.md +5 -5
  186. package/squads/squad-cloning/squad.yaml +32 -11
  187. package/squads/squad-cloning/tasks/assign-content-class.md +33 -23
  188. package/squads/squad-cloning/tasks/build-cognitive-profile.md +38 -23
  189. package/squads/squad-cloning/tasks/calculate-confidence-score.md +36 -23
  190. package/squads/squad-cloning/tasks/capture-article-text.md +53 -23
  191. package/squads/squad-cloning/tasks/capture-social-posts.md +50 -23
  192. package/squads/squad-cloning/tasks/compile-source-catalog.md +37 -23
  193. package/squads/squad-cloning/tasks/cross-reference-kbs.md +67 -23
  194. package/squads/squad-cloning/tasks/deploy-cross-squad-kbs.md +43 -28
  195. package/squads/squad-cloning/tasks/design-kb-taxonomy.md +70 -23
  196. package/squads/squad-cloning/tasks/determine-clone-tier.md +45 -23
  197. package/squads/squad-cloning/tasks/discover-articles-interviews.md +36 -23
  198. package/squads/squad-cloning/tasks/discover-books-publications.md +36 -23
  199. package/squads/squad-cloning/tasks/discover-podcasts-appearances.md +36 -23
  200. package/squads/squad-cloning/tasks/discover-social-media-content.md +36 -23
  201. package/squads/squad-cloning/tasks/discover-youtube-channels.md +37 -23
  202. package/squads/squad-cloning/tasks/escalate-quality-issues.md +40 -23
  203. package/squads/squad-cloning/tasks/estimate-content-volume.md +37 -23
  204. package/squads/squad-cloning/tasks/extract-book-content.md +53 -23
  205. package/squads/squad-cloning/tasks/extract-decision-patterns.md +33 -23
  206. package/squads/squad-cloning/tasks/extract-heuristics.md +33 -23
  207. package/squads/squad-cloning/tasks/extract-mental-models.md +33 -23
  208. package/squads/squad-cloning/tasks/extract-vocabulary-tone.md +29 -23
  209. package/squads/squad-cloning/tasks/extract-workflows-processes.md +34 -23
  210. package/squads/squad-cloning/tasks/finalize-clone-delivery.md +37 -23
  211. package/squads/squad-cloning/tasks/generate-agent-commands.md +48 -23
  212. package/squads/squad-cloning/tasks/generate-agent-heuristics.md +44 -23
  213. package/squads/squad-cloning/tasks/generate-agent-persona.md +53 -23
  214. package/squads/squad-cloning/tasks/generate-agent-protocols.md +45 -23
  215. package/squads/squad-cloning/tasks/generate-checklist-files.md +43 -28
  216. package/squads/squad-cloning/tasks/generate-cross-squad-handoffs.md +53 -23
  217. package/squads/squad-cloning/tasks/generate-extraction-report.md +30 -23
  218. package/squads/squad-cloning/tasks/generate-framework-kbs.md +68 -23
  219. package/squads/squad-cloning/tasks/generate-methodology-kbs.md +68 -23
  220. package/squads/squad-cloning/tasks/generate-mind-map.md +36 -23
  221. package/squads/squad-cloning/tasks/generate-pattern-kbs.md +66 -23
  222. package/squads/squad-cloning/tasks/generate-reference-kbs.md +67 -23
  223. package/squads/squad-cloning/tasks/generate-squad-yaml.md +39 -27
  224. package/squads/squad-cloning/tasks/generate-task-files.md +45 -28
  225. package/squads/squad-cloning/tasks/generate-template-files.md +39 -28
  226. package/squads/squad-cloning/tasks/generate-workflow-files.md +44 -28
  227. package/squads/squad-cloning/tasks/identify-contradictions.md +32 -23
  228. package/squads/squad-cloning/tasks/identify-meta-patterns.md +42 -23
  229. package/squads/squad-cloning/tasks/initiate-clone-project.md +40 -23
  230. package/squads/squad-cloning/tasks/monitor-pipeline-progress.md +33 -23
  231. package/squads/squad-cloning/tasks/normalize-raw-content.md +43 -23
  232. package/squads/squad-cloning/tasks/package-squad-output.md +39 -28
  233. package/squads/squad-cloning/tasks/resolve-contradictions.md +47 -23
  234. package/squads/squad-cloning/tasks/run-pre-publish-checklist.md +39 -27
  235. package/squads/squad-cloning/tasks/tag-confidence-levels.md +30 -23
  236. package/squads/squad-cloning/tasks/transcribe-podcast-episodes.md +56 -23
  237. package/squads/squad-cloning/tasks/transcribe-youtube-videos.md +54 -23
  238. package/squads/squad-cloning/tasks/validate-agent-completeness.md +47 -23
  239. package/squads/squad-cloning/tasks/validate-kb-citations.md +62 -23
  240. package/squads/squad-cloning/tasks/validate-transcription-quality.md +39 -23
  241. package/squads/squad-cloning/workflows/full-clone-pipeline.yaml +17 -1
  242. package/squads/squad-cloning/workflows/tier2-consultant.yaml +1 -1
  243. package/squads/squad-commercial/README.md +18 -6
  244. package/squads/squad-commercial/agents/commercial-orqx.md +11 -2
  245. package/squads/squad-commercial/agents/cs-business-auditor.md +12 -3
  246. package/squads/squad-commercial/agents/cs-client-success.md +12 -3
  247. package/squads/squad-commercial/agents/cs-crm-specialist.md +12 -3
  248. package/squads/squad-commercial/agents/cs-funnel-architect.md +12 -3
  249. package/squads/squad-commercial/agents/cs-lead-generation-strategist.md +12 -3
  250. package/squads/squad-commercial/agents/cs-offer-designer.md +12 -3
  251. package/squads/squad-commercial/agents/cs-revops-analyst.md +12 -3
  252. package/squads/squad-commercial/agents/cs-sales-closer.md +12 -3
  253. package/squads/squad-commercial/agents/cs-sales-enablement.md +12 -3
  254. package/squads/squad-commercial/agents/legal-chief.md +19 -189
  255. package/squads/squad-commercial/knowledge-base/chrome-brain-integration.md +17 -34
  256. package/squads/squad-commercial/knowledge-base/prospecting-pipeline-generation.md +1 -1
  257. package/squads/squad-commercial/knowledge-base/sales-revenue-master-reference.md +2 -2
  258. package/squads/squad-commercial/squad.yaml +25 -16
  259. package/squads/squad-commercial/tasks/build-nurture-sequences.md +1 -1
  260. package/squads/squad-commercial/tasks/coordinate-revenue-cycle.md +5 -5
  261. package/squads/squad-commercial/tasks/define-icp-profile.md +1 -1
  262. package/squads/squad-commercial/tasks/design-advocacy-program.md +1 -1
  263. package/squads/squad-commercial/tasks/design-lead-magnet.md +1 -1
  264. package/squads/squad-commercial/tasks/design-lead-magnets.md +2 -2
  265. package/squads/squad-commercial/tasks/manage-commercial-handoffs.md +5 -5
  266. package/squads/squad-commercial/tasks/map-content-to-funnel.md +4 -4
  267. package/squads/squad-commercial/tasks/run-productization-sprint.md +2 -2
  268. package/squads/squad-content/README.md +18 -6
  269. package/squads/squad-content/agents/content-analyst.md +9 -0
  270. package/squads/squad-content/agents/content-engineer.md +10 -1
  271. package/squads/squad-content/agents/content-governor.md +10 -1
  272. package/squads/squad-content/agents/content-orqx.md +13 -4
  273. package/squads/squad-content/agents/editorial-strategist.md +11 -2
  274. package/squads/squad-content/agents/platform-specialist.md +14 -5
  275. package/squads/squad-content/agents/signal-intelligence.md +9 -0
  276. package/squads/squad-content/checklists/onboarding-setup-checklist.md +2 -2
  277. package/squads/squad-content/knowledge-base/chrome-brain-integration.md +17 -38
  278. package/squads/squad-content/knowledge-base/content-strategy-master-reference.md +1 -1
  279. package/squads/squad-content/knowledge-base/cross-squad-integration-protocol.md +24 -24
  280. package/squads/squad-content/knowledge-base/social-algorithms-master-reference.md +1 -1
  281. package/squads/squad-content/squad.yaml +22 -11
  282. package/squads/squad-content/tasks/check-brand-consistency.md +2 -2
  283. package/squads/squad-content/tasks/coordinate-cross-squad.md +2 -2
  284. package/squads/squad-content/tasks/define-big-idea.md +2 -2
  285. package/squads/squad-content/tasks/define-content-standards.md +1 -1
  286. package/squads/squad-content/tasks/define-editorial-pillars.md +1 -1
  287. package/squads/squad-content/tasks/integrate-brand-visual-assets.md +3 -3
  288. package/squads/squad-content/tasks/update-content-preferences.md +1 -1
  289. package/squads/squad-content/workflows/onboarding-content-cycle.yaml +1 -1
  290. package/squads/squad-copy/README.md +18 -6
  291. package/squads/squad-copy/agents/ad-copywriter.md +13 -4
  292. package/squads/squad-copy/agents/andre-chaperon.md +9 -0
  293. package/squads/squad-copy/agents/ben-settle.md +9 -0
  294. package/squads/squad-copy/agents/brand-voice-writer.md +14 -5
  295. package/squads/squad-copy/agents/claude-hopkins.md +9 -0
  296. package/squads/squad-copy/agents/clayton-makepeace.md +9 -0
  297. package/squads/squad-copy/agents/conversion-writer.md +13 -4
  298. package/squads/squad-copy/agents/copy-chief.md +24 -152
  299. package/squads/squad-copy/agents/copy-editor.md +11 -2
  300. package/squads/squad-copy/agents/copy-orqx.md +10 -1
  301. package/squads/squad-copy/agents/copy-strategist.md +16 -7
  302. package/squads/squad-copy/agents/dan-kennedy.md +9 -0
  303. package/squads/squad-copy/agents/dan-koe.md +9 -0
  304. package/squads/squad-copy/agents/david-deutsch.md +9 -0
  305. package/squads/squad-copy/agents/david-ogilvy.md +9 -0
  306. package/squads/squad-copy/agents/direct-response-writer.md +13 -4
  307. package/squads/squad-copy/agents/email-sequence-strategist.md +13 -4
  308. package/squads/squad-copy/agents/eugene-schwartz.md +9 -0
  309. package/squads/squad-copy/agents/frank-kern.md +9 -0
  310. package/squads/squad-copy/agents/funnel-copywriter.md +13 -4
  311. package/squads/squad-copy/agents/gary-bencivenga.md +9 -0
  312. package/squads/squad-copy/agents/gary-halbert.md +9 -0
  313. package/squads/squad-copy/agents/headline-specialist.md +10 -1
  314. package/squads/squad-copy/agents/jim-rutz.md +9 -0
  315. package/squads/squad-copy/agents/joe-sugarman.md +9 -0
  316. package/squads/squad-copy/agents/john-carlton.md +9 -0
  317. package/squads/squad-copy/agents/jon-benson.md +9 -0
  318. package/squads/squad-copy/agents/long-form-writer.md +13 -4
  319. package/squads/squad-copy/agents/parris-lampropoulos.md +9 -0
  320. package/squads/squad-copy/agents/persuasion-psychologist.md +12 -3
  321. package/squads/squad-copy/agents/proof-architect.md +13 -4
  322. package/squads/squad-copy/agents/robert-collier.md +9 -0
  323. package/squads/squad-copy/agents/russell-brunson.md +9 -0
  324. package/squads/squad-copy/agents/ry-schwartz.md +9 -0
  325. package/squads/squad-copy/agents/stefan-georgi.md +9 -0
  326. package/squads/squad-copy/agents/todd-brown.md +9 -0
  327. package/squads/squad-copy/knowledge-base/chrome-brain-integration.md +17 -37
  328. package/squads/squad-copy/squad.yaml +49 -16
  329. package/squads/squad-copy/tasks/align-copy-strategy-with-brand.md +6 -6
  330. package/squads/squad-copy/tasks/approve-copy-for-release.md +1 -1
  331. package/squads/squad-copy/tasks/build-headline-swipe-file.md +1 -1
  332. package/squads/squad-copy/tasks/build-message-hierarchy.md +2 -2
  333. package/squads/squad-copy/tasks/conduct-copy-audit.md +1 -1
  334. package/squads/squad-copy/tasks/coordinate-multi-channel-copy.md +1 -1
  335. package/squads/squad-copy/tasks/craft-social-media-hooks.md +1 -1
  336. package/squads/squad-copy/tasks/create-brand-manifesto.md +1 -1
  337. package/squads/squad-copy/tasks/create-case-study-framework.md +3 -3
  338. package/squads/squad-copy/tasks/create-copy-brief.md +3 -3
  339. package/squads/squad-copy/tasks/create-ugc-script.md +3 -3
  340. package/squads/squad-copy/tasks/define-market-awareness-level.md +1 -1
  341. package/squads/squad-copy/tasks/design-headline-ab-tests.md +2 -2
  342. package/squads/squad-copy/tasks/develop-brand-voice.md +1 -1
  343. package/squads/squad-copy/tasks/map-objection-landscape.md +2 -2
  344. package/squads/squad-copy/tasks/optimize-email-engagement.md +2 -2
  345. package/squads/squad-copy/tasks/optimize-funnel-conversion-copy.md +3 -3
  346. package/squads/squad-copy/tasks/plan-multi-channel-copy.md +1 -1
  347. package/squads/squad-copy/tasks/write-ad-copy-variations.md +2 -2
  348. package/squads/squad-copy/tasks/write-funnel-copy-sequence.md +1 -1
  349. package/squads/squad-copy/tasks/write-video-podcast-titles.md +1 -1
  350. package/squads/squad-copy/workflows/brand-voice-development.yaml +1 -1
  351. package/squads/squad-council/README.md +18 -6
  352. package/squads/squad-council/agents/brene-brown.md +9 -0
  353. package/squads/squad-council/agents/charlie-munger.md +9 -0
  354. package/squads/squad-council/agents/council-orqx.md +12 -3
  355. package/squads/squad-council/agents/derek-sivers.md +9 -0
  356. package/squads/squad-council/agents/naval-ravikant.md +9 -0
  357. package/squads/squad-council/agents/patrick-lencioni.md +9 -0
  358. package/squads/squad-council/agents/peter-thiel.md +9 -0
  359. package/squads/squad-council/agents/ray-dalio.md +9 -0
  360. package/squads/squad-council/agents/reid-hoffman.md +9 -0
  361. package/squads/squad-council/agents/simon-sinek.md +9 -0
  362. package/squads/squad-council/agents/yvon-chouinard.md +9 -0
  363. package/squads/squad-council/knowledge-base/brand-strategy-models.md +2 -2
  364. package/squads/squad-council/knowledge-base/innovation-disruption-frameworks.md +1 -1
  365. package/squads/squad-council/knowledge-base/market-analysis-frameworks.md +1 -1
  366. package/squads/squad-council/squad.yaml +25 -20
  367. package/squads/squad-courses/README.md +18 -6
  368. package/squads/squad-courses/agents/assessment-creator.md +9 -0
  369. package/squads/squad-courses/agents/content-writer.md +9 -0
  370. package/squads/squad-courses/agents/courses-orqx.md +11 -2
  371. package/squads/squad-courses/agents/curriculum-designer.md +9 -0
  372. package/squads/squad-courses/agents/launch-strategist.md +9 -0
  373. package/squads/squad-courses/agents/lesson-architect.md +9 -0
  374. package/squads/squad-courses/agents/production-director.md +9 -0
  375. package/squads/squad-courses/agents/slide-designer.md +9 -0
  376. package/squads/squad-courses/knowledge-base/domain-advocacia-curriculum.md +1 -1
  377. package/squads/squad-courses/knowledge-base/domain-contabilidade-curriculum.md +1 -1
  378. package/squads/squad-courses/squad.yaml +21 -10
  379. package/squads/squad-courses/tasks/adapt-content-for-level.md +30 -22
  380. package/squads/squad-courses/tasks/adapt-slides-for-format.md +41 -23
  381. package/squads/squad-courses/tasks/create-bonus-strategy.md +34 -17
  382. package/squads/squad-courses/tasks/create-final-project-brief.md +48 -22
  383. package/squads/squad-courses/tasks/create-lesson-outline.md +34 -22
  384. package/squads/squad-courses/tasks/create-presentation-outline.md +40 -23
  385. package/squads/squad-courses/tasks/create-production-checklist.md +43 -28
  386. package/squads/squad-courses/tasks/create-progress-milestones.md +40 -22
  387. package/squads/squad-courses/tasks/create-quiz-questions.md +47 -22
  388. package/squads/squad-courses/tasks/create-sales-page-brief.md +36 -17
  389. package/squads/squad-courses/tasks/create-self-evaluation.md +41 -22
  390. package/squads/squad-courses/tasks/create-shot-list.md +41 -28
  391. package/squads/squad-courses/tasks/create-speaker-notes.md +43 -23
  392. package/squads/squad-courses/tasks/create-syllabus-document.md +35 -23
  393. package/squads/squad-courses/tasks/create-teleprompter-script.md +42 -28
  394. package/squads/squad-courses/tasks/create-workshop-materials.md +40 -23
  395. package/squads/squad-courses/tasks/define-competency-framework.md +42 -23
  396. package/squads/squad-courses/tasks/define-course-scope.md +36 -23
  397. package/squads/squad-courses/tasks/define-learning-outcomes.md +41 -23
  398. package/squads/squad-courses/tasks/define-lesson-objectives.md +35 -22
  399. package/squads/squad-courses/tasks/design-certification-criteria.md +43 -22
  400. package/squads/squad-courses/tasks/design-email-sequence.md +33 -17
  401. package/squads/squad-courses/tasks/design-interactive-elements.md +45 -23
  402. package/squads/squad-courses/tasks/design-intro-outro.md +38 -27
  403. package/squads/squad-courses/tasks/design-knowledge-checkpoints.md +36 -22
  404. package/squads/squad-courses/tasks/design-learning-path.md +40 -23
  405. package/squads/squad-courses/tasks/design-lesson-flow.md +40 -22
  406. package/squads/squad-courses/tasks/design-module-structure.md +37 -22
  407. package/squads/squad-courses/tasks/design-peer-review-rubric.md +40 -22
  408. package/squads/squad-courses/tasks/design-practical-assessment.md +45 -22
  409. package/squads/squad-courses/tasks/design-pricing-model.md +34 -17
  410. package/squads/squad-courses/tasks/design-screen-recording-flow.md +41 -28
  411. package/squads/squad-courses/tasks/design-slide-structure.md +40 -23
  412. package/squads/squad-courses/tasks/design-student-onboarding.md +34 -17
  413. package/squads/squad-courses/tasks/design-visual-hierarchy.md +42 -23
  414. package/squads/squad-courses/tasks/estimate-lesson-duration.md +35 -22
  415. package/squads/squad-courses/tasks/finalize-course-delivery.md +34 -23
  416. package/squads/squad-courses/tasks/initiate-course-project.md +38 -23
  417. package/squads/squad-courses/tasks/map-prerequisite-chain.md +41 -23
  418. package/squads/squad-courses/tasks/monitor-course-progress.md +34 -23
  419. package/squads/squad-courses/tasks/plan-b-roll-sequences.md +41 -28
  420. package/squads/squad-courses/tasks/plan-enrollment-funnel.md +35 -17
  421. package/squads/squad-courses/tasks/plan-launch-sequence.md +36 -17
  422. package/squads/squad-courses/tasks/plan-practical-exercises.md +36 -22
  423. package/squads/squad-courses/tasks/plan-recording-session.md +48 -28
  424. package/squads/squad-courses/tasks/proofread-course-content.md +30 -22
  425. package/squads/squad-courses/tasks/review-course-quality.md +34 -23
  426. package/squads/squad-courses/tasks/select-platform-strategy.md +35 -17
  427. package/squads/squad-courses/tasks/sequence-difficulty-progression.md +36 -22
  428. package/squads/squad-courses/tasks/structure-module-sequence.md +40 -23
  429. package/squads/squad-courses/tasks/validate-pedagogical-coherence.md +43 -23
  430. package/squads/squad-courses/tasks/write-case-studies.md +30 -22
  431. package/squads/squad-courses/tasks/write-ebook-chapter.md +30 -22
  432. package/squads/squad-courses/tasks/write-handout-material.md +30 -22
  433. package/squads/squad-courses/tasks/write-lesson-content.md +33 -22
  434. package/squads/squad-courses/tasks/write-slide-content.md +43 -23
  435. package/squads/squad-courses/tasks/write-summary-sheets.md +30 -22
  436. package/squads/squad-courses/tasks/write-video-script.md +42 -27
  437. package/squads/squad-courses/tasks/write-workbook-exercises.md +31 -22
  438. package/squads/squad-courses/workflows/course-quality-review.yaml +3 -3
  439. package/squads/squad-courses/workflows/full-course-creation.yaml +2 -2
  440. package/squads/squad-cybersecurity/README.md +18 -6
  441. package/squads/squad-cybersecurity/agents/cloud-security-engineer.md +9 -0
  442. package/squads/squad-cybersecurity/agents/compliance-officer.md +9 -0
  443. package/squads/squad-cybersecurity/agents/cyber-chief.md +24 -159
  444. package/squads/squad-cybersecurity/agents/cyber-orqx.md +11 -2
  445. package/squads/squad-cybersecurity/agents/incident-responder.md +9 -0
  446. package/squads/squad-cybersecurity/agents/network-security-engineer.md +9 -0
  447. package/squads/squad-cybersecurity/agents/penetration-tester.md +9 -0
  448. package/squads/squad-cybersecurity/agents/soc-analyst.md +9 -0
  449. package/squads/squad-cybersecurity/agents/threat-analyst.md +9 -0
  450. package/squads/squad-cybersecurity/knowledge-base/chrome-brain-integration.md +17 -35
  451. package/squads/squad-cybersecurity/knowledge-base/routing-catalog.md +22 -22
  452. package/squads/squad-cybersecurity/squad.yaml +23 -9
  453. package/squads/squad-design/README.md +18 -6
  454. package/squads/squad-design/agents/brad-frost.md +14 -29
  455. package/squads/squad-design/agents/dan-mall.md +13 -26
  456. package/squads/squad-design/agents/dave-malouf.md +13 -26
  457. package/squads/squad-design/agents/design-chief.md +24 -216
  458. package/squads/squad-design/agents/design-orqx.md +11 -2
  459. package/squads/squad-design/agents/dx-accessibility-specialist.md +9 -0
  460. package/squads/squad-design/agents/dx-design-system-architect.md +9 -0
  461. package/squads/squad-design/agents/dx-frontend-engineer.md +9 -0
  462. package/squads/squad-design/agents/dx-interaction-designer.md +9 -0
  463. package/squads/squad-design/agents/dx-performance-engineer.md +9 -0
  464. package/squads/squad-design/agents/dx-ui-designer.md +9 -0
  465. package/squads/squad-design/agents/dx-ux-strategist.md +9 -0
  466. package/squads/squad-design/agents/nano-banana-generator.md +13 -25
  467. package/squads/squad-design/knowledge-base/brazilian-design-context.md +1 -1
  468. package/squads/squad-design/knowledge-base/chrome-brain-integration.md +17 -43
  469. package/squads/squad-design/knowledge-base/design-system-master-reference.md +1 -1
  470. package/squads/squad-design/knowledge-base/design-to-code-pipeline.md +1 -1
  471. package/squads/squad-design/knowledge-base/designops-maturity.md +1 -1
  472. package/squads/squad-design/knowledge-base/famous-design-systems-study.md +1 -1
  473. package/squads/squad-design/squad.yaml +26 -16
  474. package/squads/squad-engineering/README.md +82 -0
  475. package/squads/squad-engineering/agents/eng-architect.md +61 -0
  476. package/squads/squad-engineering/agents/eng-data.md +50 -0
  477. package/squads/squad-engineering/agents/eng-dev.md +64 -0
  478. package/squads/squad-engineering/agents/eng-devops.md +51 -0
  479. package/squads/squad-engineering/agents/eng-orqx.md +114 -0
  480. package/squads/squad-engineering/agents/eng-product.md +57 -0
  481. package/squads/squad-engineering/agents/eng-qa.md +49 -0
  482. package/squads/squad-engineering/agents/eng-sprint.md +57 -0
  483. package/squads/squad-engineering/checklists/dod.md +18 -0
  484. package/squads/squad-engineering/checklists/pre-publicacao.md +14 -0
  485. package/squads/squad-engineering/knowledge-base/doc-first-na-medida.md +46 -0
  486. package/squads/squad-engineering/knowledge-base/escada-e-cargos.md +61 -0
  487. package/squads/squad-engineering/knowledge-base/memoria-por-cargo.md +39 -0
  488. package/squads/squad-engineering/knowledge-base/seguranca-minima.md +30 -0
  489. package/squads/squad-engineering/knowledge-base/stack-por-tipo.md +30 -0
  490. package/squads/squad-engineering/knowledge-base/story-como-contrato.md +30 -0
  491. package/squads/squad-engineering/preferences/README.md +49 -0
  492. package/squads/squad-engineering/squad.yaml +202 -0
  493. package/squads/squad-engineering/tasks/classify-track.md +43 -0
  494. package/squads/squad-engineering/tasks/develop-story.md +43 -0
  495. package/squads/squad-engineering/tasks/draft-stories.md +46 -0
  496. package/squads/squad-engineering/tasks/initial-state-audit.md +55 -0
  497. package/squads/squad-engineering/tasks/operate-gate-code.md +52 -0
  498. package/squads/squad-engineering/tasks/plan-orchestration.md +35 -0
  499. package/squads/squad-engineering/tasks/prepare-environment.md +29 -0
  500. package/squads/squad-engineering/tasks/publish.md +32 -0
  501. package/squads/squad-engineering/tasks/run-retro.md +36 -0
  502. package/squads/squad-engineering/tasks/verify-dod.md +27 -0
  503. package/squads/squad-engineering/tasks/verify-track-after-diff.md +33 -0
  504. package/squads/squad-engineering/tasks/write-adr.md +29 -0
  505. package/squads/squad-engineering/tasks/write-architecture.md +44 -0
  506. package/squads/squad-engineering/tasks/write-brief.md +42 -0
  507. package/squads/squad-engineering/tasks/write-migration.md +31 -0
  508. package/squads/squad-engineering/tasks/write-prd.md +44 -0
  509. package/squads/squad-engineering/templates/adr-template.md +13 -0
  510. package/squads/squad-engineering/templates/arquitetura-template.md +43 -0
  511. package/squads/squad-engineering/templates/brief-template.md +34 -0
  512. package/squads/squad-engineering/templates/checklist-pre-publicacao-template.md +29 -0
  513. package/squads/squad-engineering/templates/estado-inicial-template.md +26 -0
  514. package/squads/squad-engineering/templates/memoria-do-cargo-template.md +32 -0
  515. package/squads/squad-engineering/templates/plano-de-orquestracao-template.md +20 -0
  516. package/squads/squad-engineering/templates/prd-template.md +41 -0
  517. package/squads/squad-engineering/templates/story-template.md +69 -0
  518. package/squads/squad-engineering/workflows/ajuste-cycle.yaml +75 -0
  519. package/squads/squad-engineering/workflows/feature-cycle.yaml +112 -0
  520. package/squads/squad-engineering/workflows/projeto-cycle.yaml +137 -0
  521. package/squads/squad-finance/README.md +18 -6
  522. package/squads/squad-finance/agents/budget-controller.md +9 -0
  523. package/squads/squad-finance/agents/finance-orqx.md +11 -2
  524. package/squads/squad-finance/agents/pricing-strategist.md +9 -0
  525. package/squads/squad-finance/agents/profitability-analyst.md +9 -0
  526. package/squads/squad-finance/agents/revenue-analyst.md +9 -0
  527. package/squads/squad-finance/knowledge-base/contabilidade-master-reference.md +1 -1
  528. package/squads/squad-finance/knowledge-base/finance-master-reference.md +1 -1
  529. package/squads/squad-finance/squad.yaml +18 -9
  530. package/squads/squad-growth/README.md +18 -6
  531. package/squads/squad-growth/agents/ga-analytics-engineer.md +9 -0
  532. package/squads/squad-growth/agents/ga-campaign-analyst.md +9 -0
  533. package/squads/squad-growth/agents/ga-cro-specialist.md +9 -0
  534. package/squads/squad-growth/agents/ga-data-analyst.md +9 -0
  535. package/squads/squad-growth/agents/ga-growth-hacker.md +9 -0
  536. package/squads/squad-growth/agents/ga-seo-strategist.md +9 -0
  537. package/squads/squad-growth/agents/growth-orqx.md +14 -5
  538. package/squads/squad-growth/knowledge-base/chrome-brain-integration.md +17 -38
  539. package/squads/squad-growth/squad.yaml +21 -16
  540. package/squads/squad-paidmedia/README.md +18 -6
  541. package/squads/squad-paidmedia/agents/campaign-analyst.md +9 -0
  542. package/squads/squad-paidmedia/agents/creative-strategist.md +9 -0
  543. package/squads/squad-paidmedia/agents/cro-specialist.md +9 -0
  544. package/squads/squad-paidmedia/agents/depesh-mandalia.md +9 -0
  545. package/squads/squad-paidmedia/agents/google-ads-specialist.md +9 -0
  546. package/squads/squad-paidmedia/agents/kasim-aslam.md +9 -0
  547. package/squads/squad-paidmedia/agents/meta-ads-specialist.md +9 -0
  548. package/squads/squad-paidmedia/agents/molly-pittman.md +9 -0
  549. package/squads/squad-paidmedia/agents/nicholas-kusmich.md +9 -0
  550. package/squads/squad-paidmedia/agents/paidmedia-orqx.md +11 -2
  551. package/squads/squad-paidmedia/agents/pedro-sobral.md +9 -0
  552. package/squads/squad-paidmedia/agents/performance-engineer.md +9 -0
  553. package/squads/squad-paidmedia/agents/pm-creative-performance-analyst.md +13 -4
  554. package/squads/squad-paidmedia/agents/pm-youtube-ads-specialist.md +12 -3
  555. package/squads/squad-paidmedia/agents/ralph-burns.md +9 -0
  556. package/squads/squad-paidmedia/agents/tom-breeze.md +9 -0
  557. package/squads/squad-paidmedia/agents/traffic-masters-chief.md +19 -201
  558. package/squads/squad-paidmedia/knowledge-base/chrome-brain-integration.md +17 -40
  559. package/squads/squad-paidmedia/squad.yaml +29 -7
  560. package/squads/squad-paidmedia/tasks/design-youtube-ad-campaign.md +2 -2
  561. package/squads/squad-product/README.md +18 -6
  562. package/squads/squad-product/agents/product-orqx.md +12 -4
  563. package/squads/squad-product/agents/ps-client-product-manager.md +9 -1
  564. package/squads/squad-product/agents/ps-delivery-manager.md +9 -1
  565. package/squads/squad-product/agents/ps-discovery-lead.md +9 -1
  566. package/squads/squad-product/agents/ps-product-analyst.md +9 -1
  567. package/squads/squad-product/agents/ps-product-ops-specialist.md +9 -1
  568. package/squads/squad-product/agents/ps-product-strategist.md +9 -1
  569. package/squads/squad-product/knowledge-base/chrome-brain-integration.md +17 -42
  570. package/squads/squad-product/squad.yaml +21 -16
  571. package/squads/squad-product/tasks/define-product-okrs.md +1 -1
  572. package/squads/squad-product/tasks/define-product-vision.md +1 -1
  573. package/squads/squad-research/README.md +18 -6
  574. package/squads/squad-research/agents/audience-intelligence.md +11 -2
  575. package/squads/squad-research/agents/competitive-intelligence.md +11 -2
  576. package/squads/squad-research/agents/data-chief.md +24 -188
  577. package/squads/squad-research/agents/data-synthesizer.md +9 -0
  578. package/squads/squad-research/agents/deep-researcher.md +9 -0
  579. package/squads/squad-research/agents/market-analyst.md +10 -1
  580. package/squads/squad-research/agents/research-orqx.md +13 -4
  581. package/squads/squad-research/agents/trend-forecaster.md +10 -1
  582. package/squads/squad-research/knowledge-base/agentic-second-brain-reference.md +2 -2
  583. package/squads/squad-research/knowledge-base/brazilian-market-research-sources.md +1 -1
  584. package/squads/squad-research/knowledge-base/chrome-brain-integration.md +17 -34
  585. package/squads/squad-research/knowledge-base/cross-squad-integration-protocol.md +7 -7
  586. package/squads/squad-research/knowledge-base/multi-agent-research-methodology.md +1 -1
  587. package/squads/squad-research/knowledge-base/research-synthesis-frameworks.md +1 -1
  588. package/squads/squad-research/preferences/README.md +7 -7
  589. package/squads/squad-research/squad.yaml +32 -20
  590. package/squads/squad-research/tasks/analyze-audience-psychographics.md +1 -1
  591. package/squads/squad-research/tasks/analyze-competitor-positioning.md +1 -1
  592. package/squads/squad-research/tasks/analyze-competitor-pricing.md +2 -2
  593. package/squads/squad-research/tasks/analyze-industry-trends.md +1 -1
  594. package/squads/squad-research/tasks/analyze-pricing-landscape.md +1 -1
  595. package/squads/squad-research/tasks/analyze-social-listening.md +1 -1
  596. package/squads/squad-research/tasks/analyze-value-chain.md +1 -1
  597. package/squads/squad-research/tasks/benchmark-competitor-digital.md +3 -3
  598. package/squads/squad-research/tasks/build-audience-persona.md +6 -6
  599. package/squads/squad-research/tasks/build-data-narrative.md +1 -1
  600. package/squads/squad-research/tasks/compile-competitive-dossier.md +4 -4
  601. package/squads/squad-research/tasks/conduct-jobs-to-be-done.md +5 -5
  602. package/squads/squad-research/tasks/coordinate-cross-squad-research.md +6 -6
  603. package/squads/squad-research/tasks/create-battle-card.md +3 -3
  604. package/squads/squad-research/tasks/create-executive-briefing.md +1 -1
  605. package/squads/squad-research/tasks/create-future-landscape.md +4 -4
  606. package/squads/squad-research/tasks/create-insight-deck.md +1 -1
  607. package/squads/squad-research/tasks/create-swot-analysis.md +4 -4
  608. package/squads/squad-research/tasks/detect-weak-signals.md +3 -3
  609. package/squads/squad-research/tasks/evaluate-market-entry.md +1 -1
  610. package/squads/squad-research/tasks/forecast-industry-trends.md +4 -4
  611. package/squads/squad-research/tasks/forecast-market-growth.md +1 -1
  612. package/squads/squad-research/tasks/generate-actionable-recommendations.md +3 -3
  613. package/squads/squad-research/tasks/identify-competitive-gaps.md +1 -1
  614. package/squads/squad-research/tasks/identify-inflection-points.md +3 -3
  615. package/squads/squad-research/tasks/identify-market-segments.md +1 -1
  616. package/squads/squad-research/tasks/manage-research-sprint.md +1 -1
  617. package/squads/squad-research/tasks/map-audience-ecosystem.md +1 -1
  618. package/squads/squad-research/tasks/map-audience-journey.md +4 -4
  619. package/squads/squad-research/tasks/map-competitive-landscape.md +3 -3
  620. package/squads/squad-research/tasks/map-strategic-implications.md +4 -4
  621. package/squads/squad-research/tasks/map-technology-adoption.md +3 -3
  622. package/squads/squad-research/tasks/orchestrate-research-pipeline.md +2 -2
  623. package/squads/squad-research/tasks/predict-market-shifts.md +1 -1
  624. package/squads/squad-research/tasks/profile-ideal-customer.md +4 -4
  625. package/squads/squad-research/tasks/run-porter-five-forces.md +1 -1
  626. package/squads/squad-research/tasks/run-scenario-planning.md +3 -3
  627. package/squads/squad-research/tasks/segment-audience.md +1 -1
  628. package/squads/squad-research/tasks/size-market-tam-sam-som.md +4 -4
  629. package/squads/squad-research/tasks/synthesize-research-report.md +4 -4
  630. package/squads/squad-research/tasks/track-emerging-technologies.md +3 -3
  631. package/squads/squad-research/tasks/visualize-research-data.md +1 -1
  632. package/squads/squad-research/workflows/audience-intelligence-cycle.yaml +4 -4
  633. package/squads/squad-research/workflows/competitive-intelligence-cycle.yaml +3 -3
  634. package/squads/squad-research/workflows/deep-research-cycle.yaml +3 -3
  635. package/squads/squad-research/workflows/full-research-sprint.yaml +7 -7
  636. package/squads/squad-research/workflows/market-analysis-cycle.yaml +3 -3
  637. package/squads/squad-research/workflows/trend-forecasting-cycle.yaml +3 -3
  638. package/squads/squad-storytelling/README.md +18 -6
  639. package/squads/squad-storytelling/agents/blake-snyder.md +9 -0
  640. package/squads/squad-storytelling/agents/dan-harmon.md +9 -0
  641. package/squads/squad-storytelling/agents/joseph-campbell.md +9 -0
  642. package/squads/squad-storytelling/agents/keith-johnstone.md +9 -0
  643. package/squads/squad-storytelling/agents/kindra-hall.md +9 -0
  644. package/squads/squad-storytelling/agents/marshall-ganz.md +9 -0
  645. package/squads/squad-storytelling/agents/matthew-dicks.md +9 -0
  646. package/squads/squad-storytelling/agents/nancy-duarte.md +9 -0
  647. package/squads/squad-storytelling/agents/oren-klaff.md +9 -0
  648. package/squads/squad-storytelling/agents/park-howell.md +9 -0
  649. package/squads/squad-storytelling/agents/shawn-coyne.md +9 -0
  650. package/squads/squad-storytelling/agents/story-chief.md +24 -170
  651. package/squads/squad-storytelling/agents/storytelling-orqx.md +12 -3
  652. package/squads/squad-storytelling/knowledge-base/chrome-brain-integration.md +17 -34
  653. package/squads/squad-storytelling/squad.yaml +28 -10
  654. package/agents/iron-orqx.md +0 -211
  655. package/bin/cli.js +0 -261
  656. package/squads/squad-claude/agents/db-sage.md +0 -152
  657. package/squads/squad-claude/agents/tools-orqx.md +0 -219
  658. package/squads/squad-cloning/agents/sop-extractor.md +0 -61
  659. package/squads/squad-design/agents/design-system.md +0 -210
  660. package/squads/squad-design/agents/ux-designer.md +0 -124
@@ -0,0 +1,518 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Iron Edge - Instalador assistido (install.js)
4
+ * Cross-platform (Mac + Windows via Node).
5
+ * v3 - com os 7 patches obrigatorios da auditoria operacional do Codex.
6
+ *
7
+ * Principios:
8
+ * - NUNCA sobrescreve. Aborta se qualquer destino-alvo ja existe.
9
+ * - Aborta em symlink/junction/reparse no destino (defesa dupla: lstat + realpath).
10
+ * - Aborta se ancestral existe e NAO e diretorio.
11
+ * - Anti-escape: cada destino tem que ficar dentro de ~/.iron ou ~/.claude.
12
+ * - Payload E arquivos gerados passam pelas MESMAS validacoes (unificado).
13
+ * - Bloqueia --source perigoso (HOME, ~/.iron, ~/.claude).
14
+ * - Rejeita backslash em nomes do payload (compat Windows).
15
+ * - Preflight completo ANTES de qualquer escrita. Sem update/uninstall.
16
+ * - Manifesto com SHA-256 (gerados marcados generated:true).
17
+ * - shopify.yaml nasce desativado. config em branco (sem PII).
18
+ *
19
+ * Uso: node install.js [--dry-run] [--source <dir>]
20
+ */
21
+
22
+ 'use strict';
23
+
24
+ const fs = require('fs');
25
+ const path = require('path');
26
+ const os = require('os');
27
+ const crypto = require('crypto');
28
+
29
+ // identidade da edicao: vem do edition.json do payload (gerado pelo build);
30
+ // os valores abaixo sao so fallback pra payload antigo sem o arquivo
31
+ let IRON_VERSION = 'iron-edge-2.x';
32
+ let IRON_VERSION_HUMAN = 'Iron Edge';
33
+
34
+ function log(msg) { process.stdout.write(msg + '\n'); }
35
+ function abort(msg) {
36
+ process.stderr.write('\n[ABORTADO] ' + msg + '\n');
37
+ process.exit(1);
38
+ }
39
+
40
+ const args = process.argv.slice(2);
41
+ const DRY_RUN = args.includes('--dry-run');
42
+ const srcIdx = args.indexOf('--source');
43
+ let SOURCE = srcIdx >= 0 && args[srcIdx + 1] ? path.resolve(args[srcIdx + 1]) : __dirname;
44
+ // Opera sobre o caminho FISICO: ancestral symlink herdado da maquina (perfil
45
+ // corporativo redirecionado, /tmp do macOS) nao e ataque - e o chao em que o
46
+ // aluno pisa. A defesa que importa (link DENTRO do payload ou dos destinos,
47
+ // redirecionando escrita) continua nas checagens abaixo, agora fisico x fisico.
48
+ try { SOURCE = fs.realpathSync.native(SOURCE); } catch (_) { /* preflight decide */ }
49
+ try {
50
+ const ed = JSON.parse(fs.readFileSync(path.join(SOURCE, 'edition.json'), 'utf8'));
51
+ if (ed.label) IRON_VERSION_HUMAN = ed.label + ' v' + (ed.version || '');
52
+ if (ed.name) IRON_VERSION = ed.name + '-' + (ed.version || '');
53
+ } catch (_) { /* payload sem edition.json: fica o fallback */ }
54
+
55
+ let HOME = os.homedir();
56
+ try { HOME = fs.realpathSync.native(HOME); } catch (_) {}
57
+ const IRON_DIR = path.join(HOME, '.iron');
58
+ const CLAUDE_DIR = path.join(HOME, '.claude');
59
+ const AGENTS_DEST = path.join(CLAUDE_DIR, 'agents');
60
+ const SKILLS_DEST = path.join(CLAUDE_DIR, 'skills');
61
+
62
+ const ALLOWED_ROOTS = [IRON_DIR, AGENTS_DEST, SKILLS_DEST];
63
+
64
+ const WIN_RESERVED = new Set([
65
+ 'CON','PRN','AUX','NUL',
66
+ 'COM1','COM2','COM3','COM4','COM5','COM6','COM7','COM8','COM9',
67
+ 'LPT1','LPT2','LPT3','LPT4','LPT5','LPT6','LPT7','LPT8','LPT9'
68
+ ]);
69
+ const WIN_INVALID_CHARS = /[<>:"|?*\x00-\x1f]/;
70
+
71
+ function hasInvalidWindowsName(relPath) {
72
+ const parts = relPath.split(/[\\/]/).filter(Boolean);
73
+ for (const p of parts) {
74
+ if (WIN_INVALID_CHARS.test(p)) return `caractere invalido em "${p}"`;
75
+ if (p.endsWith('.') || p.endsWith(' ')) return `termina em ponto/espaco: "${p}"`;
76
+ const base = p.split('.')[0].toUpperCase();
77
+ if (WIN_RESERVED.has(base)) return `nome reservado do Windows: "${p}"`;
78
+ }
79
+ return null;
80
+ }
81
+
82
+ function isInsideAllowedRoot(dest) {
83
+ for (const root of ALLOWED_ROOTS) {
84
+ const rel = path.relative(root, dest);
85
+ if (rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel))) return true;
86
+ }
87
+ return false;
88
+ }
89
+
90
+ // PATCH 1+3: defesa dupla contra symlink/junction/reparse + ancestral nao-diretorio
91
+ // retorna string de motivo se o caminho for "indireto", senao null
92
+ function indirectPathReason(p) {
93
+ let st = null;
94
+ try { st = fs.lstatSync(p); } catch (e) { return null; } // nao existe = ok
95
+ if (st.isSymbolicLink()) return 'symlink';
96
+ try {
97
+ const real = fs.realpathSync.native(p);
98
+ const expected = path.resolve(p);
99
+ if (path.normalize(real).toLowerCase() !== path.normalize(expected).toLowerCase()) {
100
+ return 'caminho indireto (junction/reparse) real=' + real;
101
+ }
102
+ } catch (e) { /* deixa o resto do preflight decidir */ }
103
+ return null;
104
+ }
105
+
106
+ function walk(dir, baseDir, out) {
107
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
108
+ for (const e of entries) {
109
+ const full = path.join(dir, e.name);
110
+ if (e.isSymbolicLink()) abort(`o payload contem um symlink (nao permitido): ${path.relative(baseDir, full)}`);
111
+ if (e.isDirectory()) walk(full, baseDir, out);
112
+ else if (e.isFile()) out.push(path.relative(baseDir, full));
113
+ }
114
+ return out;
115
+ }
116
+
117
+ function sha256(file) {
118
+ return crypto.createHash('sha256').update(fs.readFileSync(file)).digest('hex');
119
+ }
120
+
121
+ function destFor(rel) {
122
+ const norm = rel.split(path.sep).join('/');
123
+ if (norm === 'iron-routing-map.md') return path.join(IRON_DIR, 'iron-routing-map.md');
124
+ if (norm === 'BUILD-REPORT.md') return path.join(IRON_DIR, 'BUILD-REPORT.md');
125
+ if (norm === 'edition.json') return path.join(IRON_DIR, 'edition.json');
126
+ if (norm.startsWith('agents/')) return path.join(AGENTS_DEST, norm.slice('agents/'.length));
127
+ if (norm.startsWith('skills/')) return path.join(SKILLS_DEST, norm.slice('skills/'.length));
128
+ if (norm.startsWith('squads/')) return path.join(IRON_DIR, norm.slice('squads/'.length));
129
+ // docs/ vai pra maquina DENTRO do manifesto, com hash como todo o resto: sem
130
+ // isso o `verify` passaria a mentir. Ate 22/08 o destFor devolvia null aqui e o
131
+ // instalador descartava a documentacao em silencio — quem instalava recebia os
132
+ // agentes e nunca o runbook que ensina a usa-los.
133
+ if (norm.startsWith('docs/')) {
134
+ // ⛔ interno/ e historico/ NUNCA vao pra maquina de ninguem: carregam nome de
135
+ // pessoa, de cliente e nota de processo da casa. O `files` do package.json ja
136
+ // os exclui do tarball npm, mas o instalador tambem roda a partir do repo e de
137
+ // zip de edicao — a guarda tem que estar NOS DOIS, senao depende de qual
138
+ // caminho a pessoa usou. (Defeito criado pela propria correcao de 22/08 que
139
+ // fez o instalador copiar docs/, e pego antes da reauditoria.)
140
+ if (/^docs\/(interno|historico)\//.test(norm)) return null;
141
+ return path.join(IRON_DIR, norm);
142
+ }
143
+ return null;
144
+ }
145
+
146
+ log('================================');
147
+ log(' Iron Edge - Instalador');
148
+ log('================================');
149
+ log('Versao : ' + IRON_VERSION_HUMAN);
150
+ log('Origem : ' + SOURCE);
151
+ log('HOME : ' + HOME);
152
+ log('Destino ~/.iron : ' + IRON_DIR);
153
+ log('Destino ~/.claude : ' + CLAUDE_DIR);
154
+ if (DRY_RUN) log('\nMODO: DRY-RUN (nada sera copiado)\n');
155
+
156
+ // PATCH 5: bloquear SOURCE perigoso (HOME, dentro de ~/.iron ou ~/.claude)
157
+ function isInsideOrEqual(child, parent) {
158
+ const rel = path.relative(parent, child);
159
+ return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel));
160
+ }
161
+ if (isInsideOrEqual(SOURCE, HOME) && (SOURCE === HOME || isInsideOrEqual(SOURCE, IRON_DIR) || isInsideOrEqual(SOURCE, CLAUDE_DIR))) {
162
+ abort(`--source perigoso: "${SOURCE}" esta dentro de HOME/.iron/.claude. Use o payload fora dessas pastas.`);
163
+ }
164
+
165
+ // AJUSTE 1 (Codex): o proprio SOURCE nao pode ser symlink/junction/reparse, e tem que ser diretorio real
166
+ {
167
+ const srcReason = indirectPathReason(SOURCE);
168
+ if (srcReason) abort(`a pasta de origem (--source) e um caminho indireto (${srcReason}): ${SOURCE}`);
169
+ let srcStat = null;
170
+ try { srcStat = fs.lstatSync(SOURCE); } catch (e) { abort(`pasta de origem nao existe: ${SOURCE}`); }
171
+ if (!srcStat.isDirectory()) abort(`a origem (--source) nao e um diretorio: ${SOURCE}`);
172
+ }
173
+
174
+ for (const must of ['agents', 'iron-routing-map.md']) {
175
+ if (!fs.existsSync(path.join(SOURCE, must))) abort(`origem invalida: faltou "${must}" em ${SOURCE}`);
176
+ }
177
+
178
+ const allFiles = walk(SOURCE, SOURCE, []);
179
+
180
+ // monta o plano do payload
181
+ const payloadPlan = [];
182
+ for (const rel of allFiles) {
183
+ // PATCH 6 (corrigido p/ Windows): rejeitar backslash REAL no nome, sem confundir com o separador do Windows
184
+ const relPosix = rel.split(path.sep).join('/');
185
+ if (relPosix.includes('\\')) abort(`nome de arquivo do payload contem backslash real no nome (invalido): ${relPosix}`);
186
+ const dest = destFor(rel);
187
+ if (!dest) continue;
188
+ payloadPlan.push({ rel, src: path.join(SOURCE, rel), dest, generated: false });
189
+ }
190
+
191
+ // PATCH 2+4+7: arquivos GERADOS entram como destinos de primeira classe, com as MESMAS validacoes
192
+ const GENERATED = [
193
+ { rel: '(gerado) config.yaml', dest: path.join(IRON_DIR, 'config.yaml'), generated: true },
194
+ { rel: '(gerado) metadata.json', dest: path.join(IRON_DIR, 'metadata.json'), generated: true },
195
+ { rel: '(gerado) install-manifest.json', dest: path.join(IRON_DIR, 'install-manifest.json'), generated: true },
196
+ { rel: '(gerado) integrations/shopify.yaml', dest: path.join(IRON_DIR, 'integrations', 'shopify.yaml'), generated: true }
197
+ ];
198
+
199
+ // LISTA UNIFICADA de todos os destinos (payload + gerados) - PATCH 1
200
+ const allItems = payloadPlan.concat(GENERATED);
201
+
202
+ // validacao unificada: anti-escape, nome Windows, colisao (payload x gerados juntos) - PATCH 2+4
203
+ const lowerSeen = new Map();
204
+ let totalBytes = 0;
205
+ for (const item of allItems) {
206
+ if (!isInsideAllowedRoot(item.dest)) abort(`destino escaparia do root permitido (${item.rel}) -> ${item.dest}`);
207
+ const bad = hasInvalidWindowsName(path.relative(HOME, item.dest));
208
+ if (bad) abort(`nome invalido para Windows (${item.rel}): ${bad}`);
209
+ const lk = item.dest.toLowerCase();
210
+ if (lowerSeen.has(lk)) abort(`colisao case-insensitive: "${item.rel}" e "${lowerSeen.get(lk)}" -> mesmo destino`);
211
+ lowerSeen.set(lk, item.rel);
212
+ if (!item.generated) {
213
+ try { totalBytes += fs.statSync(item.src).size; } catch (e) {}
214
+ }
215
+ }
216
+
217
+ if (payloadPlan.length === 0) abort('nada para instalar (plano vazio).');
218
+
219
+ log(`Arquivos a instalar: ${payloadPlan.length} (+ ${GENERATED.length} gerados)`);
220
+ log(`Tamanho total do payload: ${(totalBytes / 1024).toFixed(1)} KB`);
221
+
222
+ // PREFLIGHT unificado - todos os destinos (payload + gerados)
223
+ log('\n--- PREFLIGHT (verificando destinos) ---');
224
+ const conflicts = [];
225
+ const checkedAncestors = new Map(); // AJUSTE 2 (Codex): cache por diretorio
226
+
227
+ for (const item of allItems) {
228
+ const dest = item.dest;
229
+ // existe?
230
+ let st = null;
231
+ try { st = fs.lstatSync(dest); } catch (e) {}
232
+ if (st) conflicts.push((st.isSymbolicLink() ? 'SYMLINK' : 'JA EXISTE') + ': ' + dest);
233
+
234
+ // ancestrais: indireto (symlink/junction) OU existe e nao e diretorio - PATCH 3 + cache
235
+ // (usa isInsideOrEqual em vez de startsWith textual, p/ evitar falso positivo entre homes com prefixo comum)
236
+ let dir = path.dirname(dest);
237
+ while (isInsideOrEqual(dir, HOME) && dir !== HOME) {
238
+ if (checkedAncestors.has(dir)) {
239
+ const cached = checkedAncestors.get(dir);
240
+ if (cached) { conflicts.push(cached); break; }
241
+ dir = path.dirname(dir);
242
+ continue;
243
+ }
244
+ const reason = indirectPathReason(dir);
245
+ if (reason) {
246
+ const msg = `ANCESTRAL INDIRETO (${reason}): ${dir}`;
247
+ checkedAncestors.set(dir, msg);
248
+ conflicts.push(msg); break;
249
+ }
250
+ // ancestral existe mas nao e diretorio?
251
+ let notDir = null;
252
+ try {
253
+ const dst = fs.lstatSync(dir);
254
+ if (!dst.isDirectory() && !dst.isSymbolicLink()) {
255
+ notDir = `ANCESTRAL NAO E DIRETORIO: ${dir}`;
256
+ }
257
+ } catch (e) { /* nao existe = ok */ }
258
+ if (notDir) {
259
+ checkedAncestors.set(dir, notDir);
260
+ conflicts.push(notDir); break;
261
+ }
262
+ checkedAncestors.set(dir, null); // checado e limpo
263
+ dir = path.dirname(dir);
264
+ }
265
+ }
266
+
267
+ if (conflicts.length > 0) {
268
+ // dedup (ancestrais repetidos entre muitos arquivos)
269
+ const uniq = [...new Set(conflicts)];
270
+ log(` Encontrados ${uniq.length} conflito(s) unico(s); mostrando primeiros 20:`);
271
+ for (const c of uniq.slice(0, 20)) log(' ' + c);
272
+ if (uniq.length > 20) log(` ... e mais ${uniq.length - 20}`);
273
+ abort(`${uniq.length} conflito(s) no preflight. O instalador NUNCA sobrescreve.
274
+
275
+ Se esta maquina JA TEM uma instalacao do Iron Edge, isso e esperado: esta versao
276
+ nao instala por cima, para nada seu ser perdido.
277
+
278
+ Como resolver sozinho, sem depender de ninguem:
279
+ 1. COPIE o manifesto para fora ANTES de apagar qualquer coisa (a lista do que
280
+ remover mora dentro da pasta que vai sumir):
281
+ cp ~/.iron/install-manifest.json ./iron-manifest.json
282
+ 2. Nessa copia, o campo "files" e a lista exata do que veio no pacote.
283
+ O que NAO estiver la foi voce que criou.
284
+ 3. Guarde o que for seu (agente proprio, skill propria, o que voce editou).
285
+ "npx iron-edge verify" mostra o que voce alterou em relacao ao manifesto.
286
+ 4. Apague em ~/.claude/agents e ~/.claude/skills SO os arquivos que estao na
287
+ lista. Depois, POR ULTIMO, apague a pasta ~/.iron inteira.
288
+ 5. Rode a instalacao de novo.
289
+
290
+ Se os conflitos acima NAO batem com uma instalacao que voce reconhece, pode ser
291
+ sobra de uma instalacao que falhou no meio. Nesse caso os arquivos listados sao
292
+ lixo e podem ser removidos.`);
293
+ }
294
+ log(' OK - nenhum destino existe, nenhum caminho indireto, nenhum ancestral invalido.');
295
+
296
+ if (DRY_RUN) {
297
+ log('\n--- PLANO (dry-run) ---');
298
+ for (const item of payloadPlan.slice(0, 10)) log(` ${item.rel} -> ${item.dest}`);
299
+ if (payloadPlan.length > 10) log(` ... e mais ${payloadPlan.length - 10} arquivos`);
300
+ log('\n--- arquivos que SERAO gerados ---');
301
+ for (const g of GENERATED) log(' ' + g.dest);
302
+ log('\nDRY-RUN concluido. Nada foi copiado.');
303
+ process.exit(0);
304
+ }
305
+
306
+ // COPIAR (so chega aqui se TUDO passou)
307
+ //
308
+ // ATOMICO por rollback: se a copia falhar no meio (disco cheio, permissao,
309
+ // arquivo travado por sync), desfazer o que ESTA execucao criou e abortar com
310
+ // mensagem padronizada. Sem isso, um crash aqui deixava arquivos orfaos no HOME
311
+ // e a tentativa seguinte os lia como "ja existe uma instalacao", mandando a
312
+ // pessoa pedir um runbook de migracao que nao se aplica (gate de 22/08/2026).
313
+ //
314
+ // ⛔ O rollback so remove o que esta execucao criou, item por item, pela lista
315
+ // que ele mesmo montou — NUNCA por pasta e NUNCA por padrao. O preflight ja
316
+ // garantiu que nenhum desses destinos existia antes, entao nada do usuario pode
317
+ // estar ali. Rollback que apaga demais e pior que o defeito que ele conserta.
318
+ log('\n--- INSTALANDO ---');
319
+ const manifest = [];
320
+ const criados = [];
321
+ const pastasCriadas = [];
322
+ // registra so as pastas que ESTA execucao criou de fato — mkdirSync recursive nao
323
+ // diz quais niveis eram novos, entao subimos a arvore ate achar uma que ja existia.
324
+ const marcarPastas = (dir) => {
325
+ const novas = [];
326
+ let d = dir;
327
+ while (d && d !== path.dirname(d) && !fs.existsSync(d)) { novas.unshift(d); d = path.dirname(d); }
328
+ for (const n of novas) if (!pastasCriadas.includes(n)) pastasCriadas.push(n);
329
+ };
330
+
331
+ const rollback = (motivo) => {
332
+ log('\n[ABORTADO] ' + motivo);
333
+ log(`Desfazendo: ${criados.length} arquivo(s) e ${pastasCriadas.length} pasta(s) criados nesta execucao.`);
334
+ let removidos = 0, nuncaExistiu = 0, falhas = 0;
335
+ for (const f of criados.reverse()) {
336
+ try { fs.unlinkSync(f); removidos++; }
337
+ catch (e) {
338
+ // ENOENT = o destino entrou na lista antes da escrita e a escrita nunca chegou
339
+ // a criar o arquivo. Nao e' falha de remocao, e contar como tal fazia o
340
+ // instalador pedir "confira os que sobraram" por um arquivo que nunca existiu.
341
+ if (e.code === 'ENOENT') nuncaExistiu++; else falhas++;
342
+ }
343
+ }
344
+ // pastas por ultimo, da mais funda pra mais rasa, e so se vazias.
345
+ // rmdir NAO e' recursivo de proposito: se sobrou algo dentro, e' porque nao era
346
+ // desta execucao, e o rollback nao toca no que nao criou.
347
+ let pastasRemovidas = 0, pastasMantidas = 0;
348
+ for (const d of pastasCriadas.slice().reverse()) {
349
+ try { fs.rmdirSync(d); pastasRemovidas++; }
350
+ catch (e) { if (e.code !== 'ENOENT') pastasMantidas++; }
351
+ }
352
+ log(` arquivos removidos: ${removidos}${falhas ? ' | nao removidos: ' + falhas : ''}`);
353
+ log(` pastas removidas: ${pastasRemovidas}${pastasMantidas ? ' | mantidas (nao vazias): ' + pastasMantidas : ''}`);
354
+ // ⚠️ So diz que voltou ao estado anterior se voltou MESMO. Ate 24/08 dizia sempre,
355
+ // e deixava 165 pastas vazias no disco — falha em silencio na propria alegacao.
356
+ if (falhas || pastasMantidas) log(' A maquina NAO voltou inteira ao estado anterior. Confira o que sobrou antes de instalar de novo.');
357
+ else log(' A maquina voltou ao estado anterior. Pode tentar de novo.');
358
+ process.exit(1);
359
+ };
360
+
361
+ // ─── UM PORTAO SO PARA TODA ESCRITA ──────────────────────────────────────────
362
+ //
363
+ // Historico, porque explica a forma deste bloco: a atomicidade foi remendada
364
+ // TRES vezes e o buraco reapareceu tres vezes, sempre alguns metros adiante —
365
+ // primeiro o laco de copia ficou protegido e as pastas de estado nao; depois as
366
+ // pastas entraram e a config ficou fora; depois a config entrou e as duas ultimas
367
+ // escritas (metadata.json e install-manifest.json) ficaram descobertas. Com
368
+ // `ulimit -f`, o manifesto final estourava, o rollback nunca rodava, e 2126
369
+ // arquivos ficavam orfaos com uma mensagem dizendo que a maquina "ja tinha uma
370
+ // instalacao".
371
+ //
372
+ // A causa nao era o ponto: era a FORMA. Try/catch por trecho protege o trecho que
373
+ // alguem lembrou de embrulhar, e a proxima escrita que entrar no meio nasce
374
+ // desprotegida. Entao agora existe UMA porta: nada e' escrito no disco fora de
375
+ // `escrever()` e `criarPasta()`. Qualquer escrita nova, de qualquer autor, ja
376
+ // nasce dentro do rollback — nao por disciplina de quem edita, por construcao.
377
+ //
378
+ // ⛔ O rollback so remove o que ESTA execucao criou, item por item, pela lista que
379
+ // ele mesmo montou — nunca por pasta, nunca por padrao. O preflight ja garantiu
380
+ // que nenhum destino existia antes, entao nada do usuario pode estar ali. Pasta
381
+ // pre-existente nao entra na lista e nao e' tocada.
382
+ //
383
+ // ⚠️ O destino entra na lista ANTES da escrita, nao depois. Parece detalhe e nao e':
384
+ // `writeFileSync` que estoura no meio (disco cheio, quota) ja CRIOU o arquivo, com
385
+ // conteudo truncado. Se o registro so acontecesse no sucesso, esse arquivo ficava
386
+ // fora da lista e sobrevivia ao rollback — medido: 200KB de manifesto pela metade
387
+ // sobrando num HOME que devia ter voltado ao estado anterior. Registrar antes cobre
388
+ // o caso; registrar um destino que nunca chegou a existir e' inofensivo, porque o
389
+ // rollback ignora o que nao consegue remover.
390
+ const escrever = (destino, conteudo, oQueE) => {
391
+ try {
392
+ marcarPastas(path.dirname(destino));
393
+ fs.mkdirSync(path.dirname(destino), { recursive: true });
394
+ criados.push(destino);
395
+ fs.writeFileSync(destino, conteudo);
396
+ } catch (e) { rollback(`falhou ao escrever ${oQueE}: ${e.code || e.message}`); }
397
+ };
398
+ const copiar = (origem, destino, oQueE) => {
399
+ try {
400
+ marcarPastas(path.dirname(destino));
401
+ fs.mkdirSync(path.dirname(destino), { recursive: true });
402
+ criados.push(destino);
403
+ fs.copyFileSync(origem, destino);
404
+ } catch (e) { rollback(`falhou ao escrever ${oQueE}: ${e.code || e.message}`); }
405
+ };
406
+ const criarPasta = (dir, oQueE) => {
407
+ try { marcarPastas(dir); fs.mkdirSync(dir, { recursive: true }); }
408
+ catch (e) { rollback(`falhou ao preparar ${oQueE}: ${e.code || e.message}`); }
409
+ };
410
+ // ─────────────────────────────────────────────────────────────────────────────
411
+
412
+ for (const item of payloadPlan) {
413
+ copiar(item.src, item.dest, item.rel);
414
+ manifest.push({ rel: item.rel.split(path.sep).join('/'), dest: item.dest, sha256: sha256(item.dest), generated: false });
415
+ }
416
+ log(` ${manifest.length} arquivos copiados.`);
417
+
418
+ for (const d of [path.join(IRON_DIR, 'integrations'), path.join(IRON_DIR, 'secrets')]) {
419
+ criarPasta(d, 'as pastas de estado');
420
+ }
421
+
422
+ // memoria por cargo do squad-engineering: pasta vazia, FORA do manifesto de propósito.
423
+ // O que a maquina aprendeu nao e gerenciado pelo instalador — update de pacote nunca apaga.
424
+ // Cada arquivo <cargo>.md nasce do template na primeira vez que o cargo roda.
425
+ criarPasta(path.join(IRON_DIR, 'memory', 'squad-engineering'), 'a pasta de memoria');
426
+
427
+ const shopifyYaml = path.join(IRON_DIR, 'integrations', 'shopify.yaml');
428
+ escrever(shopifyYaml, 'enabled: false\nendpoint: ""\napi_key_file: ""\n', 'a config da integracao');
429
+
430
+ const configYaml = path.join(IRON_DIR, 'config.yaml');
431
+ escrever(configYaml, [
432
+ '# Iron Edge config (gerado na instalacao, em branco)',
433
+ 'owner: ""',
434
+ 'businesses: []',
435
+ '# focus: dev # prioriza o iron-eng (engenharia de software) no roteamento.',
436
+ '# # a skill recorte preenche este campo; deixe comentado ate escolher.',
437
+ ''
438
+ ].join('\n'), 'a config inicial');
439
+
440
+ const installedAt = new Date().toISOString();
441
+
442
+ // PATCH 7: gerados entram no manifesto com generated:true
443
+ function addGenerated(p) {
444
+ if (fs.existsSync(p)) manifest.push({ rel: path.relative(IRON_DIR, p), dest: p, sha256: sha256(p), generated: true });
445
+ }
446
+
447
+ const installManifest = {
448
+ product: 'iron-edge',
449
+ version: IRON_VERSION,
450
+ label: IRON_VERSION_HUMAN,
451
+ installed_at: installedAt,
452
+ platform: process.platform,
453
+ node: process.version,
454
+ home: HOME,
455
+ scopes: { iron_root: IRON_DIR, claude_agents: AGENTS_DEST, claude_skills: SKILLS_DEST },
456
+ files: manifest // sera reescrito abaixo ja com os gerados
457
+ };
458
+
459
+ // adiciona shopify + config no manifesto antes de gravar o manifesto em si
460
+ addGenerated(shopifyYaml);
461
+ addGenerated(configYaml);
462
+
463
+ const metadataPath = path.join(IRON_DIR, 'metadata.json');
464
+ escrever(metadataPath,
465
+ JSON.stringify({ version: IRON_VERSION, label: IRON_VERSION_HUMAN, installed_at: installedAt, platform: process.platform }, null, 2),
466
+ 'o metadata');
467
+ addGenerated(metadataPath);
468
+
469
+ // grava o manifesto por ultimo (inclui tudo, menos o proprio manifesto que e auto-referente)
470
+ const manifestPath = path.join(IRON_DIR, 'install-manifest.json');
471
+ installManifest.files = manifest;
472
+ escrever(manifestPath, JSON.stringify(installManifest, null, 2), 'o manifesto da instalacao');
473
+
474
+ // VALIDACAO POS-INSTALL
475
+ log('\n--- VALIDACAO POS-INSTALL ---');
476
+ let errs = 0;
477
+
478
+ const routingDest = path.join(IRON_DIR, 'iron-routing-map.md');
479
+ if (!fs.existsSync(routingDest)) { log(' ERRO: routing-map nao chegou em ~/.iron/'); errs++; }
480
+ else log(' OK: iron-routing-map.md em ~/.iron/');
481
+
482
+ // hashes dos arquivos do payload
483
+ let hashOk = 0;
484
+ const payloadManifest = manifest.filter(f => !f.generated);
485
+ for (const f of payloadManifest) {
486
+ if (fs.existsSync(f.dest) && sha256(f.dest) === f.sha256) hashOk++;
487
+ else { log(` ERRO de hash: ${f.dest}`); errs++; }
488
+ }
489
+ log(` OK: ${hashOk}/${payloadManifest.length} hashes de payload conferidos`);
490
+
491
+ // PATCH 7: validar os arquivos GERADOS no pos-install
492
+ for (const gp of [shopifyYaml, configYaml, metadataPath, manifestPath]) {
493
+ if (!fs.existsSync(gp)) { log(` ERRO: gerado ausente: ${gp}`); errs++; }
494
+ }
495
+ if (/enabled:\s*false/.test(fs.readFileSync(shopifyYaml, 'utf8'))) log(' OK: shopify.yaml com enabled: false');
496
+ else { log(' ERRO: shopify.yaml nao esta desativado'); errs++; }
497
+ try { JSON.parse(fs.readFileSync(manifestPath, 'utf8')); log(' OK: install-manifest.json e JSON valido'); }
498
+ catch (e) { log(' ERRO: install-manifest.json invalido'); errs++; }
499
+ try { JSON.parse(fs.readFileSync(metadataPath, 'utf8')); log(' OK: metadata.json e JSON valido'); }
500
+ catch (e) { log(' ERRO: metadata.json invalido'); errs++; }
501
+
502
+ if (errs > 0) abort(`instalacao com ${errs} erro(s) de validacao.`);
503
+
504
+ log('\n================================');
505
+ log(' Iron Edge instalado com sucesso');
506
+ log('================================');
507
+ log(`Agentes : ${AGENTS_DEST}`);
508
+ log(`Skills : ${SKILLS_DEST}`);
509
+ log(`Nucleo : ${IRON_DIR}`);
510
+ log(`Manifesto: ${manifestPath}`);
511
+ log('\n--------------------------------');
512
+ log(' PROXIMO PASSO');
513
+ log('--------------------------------');
514
+ log('1. Reabra o Claude Code (pra ele carregar os novos agentes).');
515
+ log('2. Comece pelo iron-ceo: peca algo como');
516
+ log(' "ative o iron-ceo" ou "chame o iron-ceo".');
517
+ log('3. Se o iron-ceo responder com a saudacao, esta funcionando.');
518
+ log('');