invos 1.0.0 → 2.0.2

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 (304) hide show
  1. package/README.md +21 -28
  2. package/bin/invos.js +33 -27
  3. package/kit/.agents/skills/abrir/SKILL.md +41 -0
  4. package/kit/.agents/skills/analisar-dados/SKILL.md +95 -0
  5. package/kit/.agents/skills/anuncio-google/SKILL.md +174 -0
  6. package/kit/.agents/skills/aprovar-post/SKILL.md +151 -0
  7. package/kit/.agents/skills/atualizar/SKILL.md +57 -0
  8. package/kit/.agents/skills/canvas-design/LICENSE.txt +202 -0
  9. package/kit/.agents/skills/canvas-design/SKILL.md +134 -0
  10. package/kit/.agents/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  11. package/kit/.agents/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  12. package/kit/.agents/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  13. package/kit/.agents/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  14. package/kit/.agents/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  15. package/kit/.agents/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  16. package/kit/.agents/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  17. package/kit/.agents/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  18. package/kit/.agents/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  19. package/kit/.agents/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  20. package/kit/.agents/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  21. package/kit/.agents/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  22. package/kit/.agents/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  23. package/kit/.agents/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  24. package/kit/.agents/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  25. package/kit/.agents/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  26. package/kit/.agents/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  27. package/kit/.agents/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  28. package/kit/.agents/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  29. package/kit/.agents/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  30. package/kit/.agents/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  31. package/kit/.agents/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  32. package/kit/.agents/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  33. package/kit/.agents/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  34. package/kit/.agents/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  35. package/kit/.agents/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  36. package/kit/.agents/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  37. package/kit/.agents/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  38. package/kit/.agents/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  39. package/kit/.agents/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  40. package/kit/.agents/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  41. package/kit/.agents/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  42. package/kit/.agents/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  43. package/kit/.agents/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  44. package/kit/.agents/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  45. package/kit/.agents/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  46. package/kit/.agents/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  47. package/kit/.agents/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  48. package/kit/.agents/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  49. package/kit/.agents/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  50. package/kit/.agents/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  51. package/kit/.agents/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  52. package/kit/.agents/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  53. package/kit/.agents/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  54. package/kit/.agents/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  55. package/kit/.agents/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  56. package/kit/.agents/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  57. package/kit/.agents/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  58. package/kit/.agents/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  59. package/kit/.agents/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  60. package/kit/.agents/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  61. package/kit/.agents/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  62. package/kit/.agents/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  63. package/kit/.agents/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  64. package/kit/.agents/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  65. package/kit/.agents/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  66. package/kit/.agents/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  67. package/kit/.agents/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  68. package/kit/.agents/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  69. package/kit/.agents/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  70. package/kit/.agents/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  71. package/kit/.agents/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  72. package/kit/.agents/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  73. package/kit/.agents/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  74. package/kit/.agents/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  75. package/kit/.agents/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  76. package/kit/.agents/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  77. package/kit/.agents/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  78. package/kit/.agents/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  79. package/kit/.agents/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  80. package/kit/.agents/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  81. package/kit/.agents/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  82. package/kit/.agents/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  83. package/kit/.agents/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  84. package/kit/.agents/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  85. package/kit/.agents/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  86. package/kit/.agents/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  87. package/kit/.agents/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  88. package/kit/.agents/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  89. package/kit/.agents/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  90. package/kit/.agents/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  91. package/kit/.agents/skills/carrossel/SKILL.md +272 -0
  92. package/kit/.agents/skills/email-profissional/SKILL.md +70 -0
  93. package/kit/.agents/skills/frontend-design/LICENSE.txt +177 -0
  94. package/kit/.agents/skills/frontend-design/SKILL.md +55 -0
  95. package/kit/.agents/skills/instalar/SKILL.md +170 -0
  96. package/kit/.agents/skills/mapear-rotinas/SKILL.md +75 -0
  97. package/kit/.agents/skills/notion/SKILL.md +134 -0
  98. package/kit/.agents/skills/novo-projeto/SKILL.md +94 -0
  99. package/kit/.agents/skills/publicar-tema/SKILL.md +154 -0
  100. package/kit/.agents/skills/relatorio-ads/SKILL.md +163 -0
  101. package/kit/.agents/skills/responder-avaliacoes/SKILL.md +100 -0
  102. package/kit/.agents/skills/salvar/SKILL.md +49 -0
  103. package/kit/.agents/skills/seo/SKILL.md +310 -0
  104. package/kit/.agents/skills/youtube-summarizer/SKILL.md +223 -0
  105. package/kit/.agents/squads/README.md +84 -0
  106. package/kit/.agents/squads/hormozi-squad/README.md +1 -2
  107. package/kit/AGENTS.md +96 -137
  108. package/kit/INVOS.json +28 -20
  109. package/kit/{.agents/skills/stop-slop/LICENSE → LICENSE} +1 -1
  110. package/kit/README.md +87 -399
  111. package/kit/_memoria/empresa.md +18 -0
  112. package/kit/_memoria/estrategia.md +25 -0
  113. package/kit/_memoria/preferencias.md +12 -0
  114. package/kit/dados/README.md +15 -0
  115. package/kit/marca/design-guide.md +59 -0
  116. package/kit/marketing/README.md +44 -0
  117. package/kit/saidas/README.md +29 -0
  118. package/kit/scripts/README.md +51 -0
  119. package/kit/templates/perfis/agents-agencia.md +70 -0
  120. package/kit/templates/perfis/agents-empresa.md +75 -0
  121. package/kit/templates/perfis/agents-freelancer.md +68 -0
  122. package/kit/templates/perfis/agents-solopreneur.md +68 -0
  123. package/package.json +6 -11
  124. package/src/commands/doctor.js +63 -78
  125. package/src/commands/init.js +35 -24
  126. package/src/commands/install.js +16 -20
  127. package/src/commands/update.js +28 -66
  128. package/src/lock.js +9 -11
  129. package/src/manifest.js +1 -1
  130. package/src/resolve-kit.js +27 -12
  131. package/src/symlinks.js +36 -53
  132. package/src/utils.js +43 -66
  133. package/kit/.agents/skills/apple/DESCRIPTION.md +0 -2
  134. package/kit/.agents/skills/apple/apple-notes/SKILL.md +0 -90
  135. package/kit/.agents/skills/apple/apple-reminders/SKILL.md +0 -130
  136. package/kit/.agents/skills/audit/SKILL.md +0 -177
  137. package/kit/.agents/skills/design-marca/SKILL.md +0 -92
  138. package/kit/.agents/skills/instagram-carrossel/SKILL.md +0 -79
  139. package/kit/.agents/skills/instagram-carrossel/references/fetch-assets.md +0 -77
  140. package/kit/.agents/skills/instagram-carrossel/references/publish.md +0 -48
  141. package/kit/.agents/skills/instagram-carrossel/references/render-png.md +0 -147
  142. package/kit/.agents/skills/instagram-carrossel/scripts/publish.js +0 -165
  143. package/kit/.agents/skills/llm-wiki/SKILL.md +0 -507
  144. package/kit/.agents/skills/onboard/SKILL.md +0 -152
  145. package/kit/.agents/skills/pd-ikigai/SKILL.md +0 -269
  146. package/kit/.agents/skills/productivity/DESCRIPTION.md +0 -3
  147. package/kit/.agents/skills/productivity/google-workspace/SKILL.md +0 -335
  148. package/kit/.agents/skills/productivity/google-workspace/references/gmail-search-syntax.md +0 -63
  149. package/kit/.agents/skills/productivity/google-workspace/scripts/_hermes_home.py +0 -42
  150. package/kit/.agents/skills/productivity/google-workspace/scripts/google_api.py +0 -1225
  151. package/kit/.agents/skills/productivity/google-workspace/scripts/gws_bridge.py +0 -111
  152. package/kit/.agents/skills/productivity/google-workspace/scripts/setup.py +0 -481
  153. package/kit/.agents/skills/productivity/nano-pdf/SKILL.md +0 -52
  154. package/kit/.agents/skills/productivity/notion/SKILL.md +0 -448
  155. package/kit/.agents/skills/productivity/notion/references/block-types.md +0 -112
  156. package/kit/.agents/skills/productivity/ocr-and-documents/DESCRIPTION.md +0 -3
  157. package/kit/.agents/skills/productivity/ocr-and-documents/SKILL.md +0 -172
  158. package/kit/.agents/skills/productivity/ocr-and-documents/scripts/extract_marker.py +0 -87
  159. package/kit/.agents/skills/productivity/ocr-and-documents/scripts/extract_pymupdf.py +0 -98
  160. package/kit/.agents/skills/productivity/powerpoint/LICENSE.txt +0 -30
  161. package/kit/.agents/skills/productivity/powerpoint/SKILL.md +0 -237
  162. package/kit/.agents/skills/productivity/powerpoint/editing.md +0 -205
  163. package/kit/.agents/skills/productivity/powerpoint/pptxgenjs.md +0 -420
  164. package/kit/.agents/skills/productivity/powerpoint/scripts/__init__.py +0 -0
  165. package/kit/.agents/skills/productivity/powerpoint/scripts/add_slide.py +0 -195
  166. package/kit/.agents/skills/productivity/powerpoint/scripts/clean.py +0 -286
  167. package/kit/.agents/skills/productivity/powerpoint/scripts/office/helpers/__init__.py +0 -0
  168. package/kit/.agents/skills/productivity/powerpoint/scripts/office/helpers/merge_runs.py +0 -199
  169. package/kit/.agents/skills/productivity/powerpoint/scripts/office/helpers/simplify_redlines.py +0 -197
  170. package/kit/.agents/skills/productivity/powerpoint/scripts/office/pack.py +0 -159
  171. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  172. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  173. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  174. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  175. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  176. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  177. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  178. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  179. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  180. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  181. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  182. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  183. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  184. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  185. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  186. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  187. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  188. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  189. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  190. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  191. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  192. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  193. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  194. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  195. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  196. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  197. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  198. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ecma/fourth-edition/opc-contentTypes.xsd +0 -42
  199. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ecma/fourth-edition/opc-coreProperties.xsd +0 -50
  200. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ecma/fourth-edition/opc-digSig.xsd +0 -49
  201. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/ecma/fourth-edition/opc-relationships.xsd +0 -33
  202. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/mce/mc.xsd +0 -75
  203. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  204. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  205. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  206. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  207. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  208. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  209. package/kit/.agents/skills/productivity/powerpoint/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  210. package/kit/.agents/skills/proposta/SKILL.md +0 -159
  211. package/kit/.agents/skills/proposta/references/proposta-avancada.md +0 -17
  212. package/kit/.agents/skills/proposta/references/proposta.html +0 -187
  213. package/kit/.agents/skills/session-checkpoint/SKILL.md +0 -80
  214. package/kit/.agents/skills/session-end/SKILL.md +0 -166
  215. package/kit/.agents/skills/session-start/SKILL.md +0 -149
  216. package/kit/.agents/skills/social-content/SKILL.md +0 -119
  217. package/kit/.agents/skills/stop-slop/CHANGELOG.md +0 -24
  218. package/kit/.agents/skills/stop-slop/README.md +0 -62
  219. package/kit/.agents/skills/stop-slop/SKILL.md +0 -68
  220. package/kit/.agents/skills/stop-slop/references/examples.md +0 -59
  221. package/kit/.agents/skills/stop-slop/references/phrases.md +0 -128
  222. package/kit/.agents/skills/stop-slop/references/structures.md +0 -134
  223. package/kit/.agents/squads/index.md +0 -14
  224. package/kit/.agents/squads/instagram-carrossel/DEPENDENCIES.md +0 -75
  225. package/kit/.agents/squads/instagram-carrossel/README.md +0 -52
  226. package/kit/.agents/squads/instagram-carrossel/RUN.md +0 -115
  227. package/kit/.agents/squads/instagram-carrossel/_memory/memories.md +0 -16
  228. package/kit/.agents/squads/instagram-carrossel/agents/copywriter/tasks/create-slides.md +0 -96
  229. package/kit/.agents/squads/instagram-carrossel/agents/copywriter/tasks/generate-angles.md +0 -111
  230. package/kit/.agents/squads/instagram-carrossel/agents/copywriter/tasks/optimize-copy.md +0 -81
  231. package/kit/.agents/squads/instagram-carrossel/agents/copywriter.custom.md +0 -73
  232. package/kit/.agents/squads/instagram-carrossel/agents/image-designer/tasks/create-slides.md +0 -132
  233. package/kit/.agents/squads/instagram-carrossel/agents/image-designer/tasks/propose-visual-identities.md +0 -89
  234. package/kit/.agents/squads/instagram-carrossel/agents/image-designer/tasks/render-export.md +0 -100
  235. package/kit/.agents/squads/instagram-carrossel/agents/image-designer.custom.md +0 -47
  236. package/kit/.agents/squads/instagram-carrossel/agents/publisher/tasks/validate-publish.md +0 -50
  237. package/kit/.agents/squads/instagram-carrossel/agents/publisher.custom.md +0 -26
  238. package/kit/.agents/squads/instagram-carrossel/agents/researcher/tasks/find-and-rank-news.md +0 -105
  239. package/kit/.agents/squads/instagram-carrossel/agents/researcher.custom.md +0 -46
  240. package/kit/.agents/squads/instagram-carrossel/agents/reviewer/tasks/generate-feedback.md +0 -91
  241. package/kit/.agents/squads/instagram-carrossel/agents/reviewer/tasks/score-content.md +0 -103
  242. package/kit/.agents/squads/instagram-carrossel/agents/reviewer.custom.md +0 -53
  243. package/kit/.agents/squads/instagram-carrossel/output/.gitkeep +0 -0
  244. package/kit/.agents/squads/instagram-carrossel/output/slides/.gitkeep +0 -0
  245. package/kit/.agents/squads/instagram-carrossel/output/slides/rendered/.gitkeep +0 -0
  246. package/kit/.agents/squads/instagram-carrossel/pipeline/data/anti-patterns.md +0 -125
  247. package/kit/.agents/squads/instagram-carrossel/pipeline/data/domain-framework.md +0 -92
  248. package/kit/.agents/squads/instagram-carrossel/pipeline/data/instagram-feed-best-practices.md +0 -235
  249. package/kit/.agents/squads/instagram-carrossel/pipeline/data/output-examples.md +0 -244
  250. package/kit/.agents/squads/instagram-carrossel/pipeline/data/quality-criteria.md +0 -120
  251. package/kit/.agents/squads/instagram-carrossel/pipeline/data/research-brief.md +0 -135
  252. package/kit/.agents/squads/instagram-carrossel/pipeline/data/tone-of-voice.md +0 -32
  253. package/kit/.agents/squads/instagram-carrossel/pipeline/pipeline.yaml +0 -136
  254. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-01-input-content.md +0 -38
  255. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-02-find-news.md +0 -42
  256. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-03-select-story.md +0 -59
  257. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-04-generate-angles.md +0 -45
  258. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-05-select-angle.md +0 -64
  259. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-06-create-copy.md +0 -51
  260. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-07-approve-copy.md +0 -52
  261. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-08-propose-visuals.md +0 -42
  262. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-09-select-visual.md +0 -61
  263. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-10-create-slides.md +0 -55
  264. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-11-approve-images.md +0 -60
  265. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-12-review.md +0 -55
  266. package/kit/.agents/squads/instagram-carrossel/pipeline/steps/step-13-publish.md +0 -79
  267. package/kit/.agents/squads/instagram-carrossel/squad-party.csv +0 -6
  268. package/kit/.agents/squads/instagram-carrossel/squad.yaml +0 -70
  269. package/kit/COMECE-AQUI.md +0 -207
  270. package/kit/MEMORY.md +0 -31
  271. package/kit/SECURITY.md +0 -39
  272. package/kit/clientes/README.md +0 -72
  273. package/kit/clientes/_index.md +0 -32
  274. package/kit/clientes/_template/arquivos/.gitkeep +0 -0
  275. package/kit/clientes/_template/contexto.md +0 -21
  276. package/kit/clientes/_template/entregas.md +0 -20
  277. package/kit/clientes/_template/perfil.md +0 -47
  278. package/kit/clientes/_template/propostas/.gitkeep +0 -0
  279. package/kit/conteudo/README.md +0 -12
  280. package/kit/conteudo/_fila.md +0 -12
  281. package/kit/conteudo/carrosseis/.gitkeep +0 -0
  282. package/kit/conteudo/publicados/.gitkeep +0 -0
  283. package/kit/docs/audit-enxugamento-sieve.md +0 -187
  284. package/kit/docs/cli.md +0 -62
  285. package/kit/docs/hotmart-webhook.md +0 -96
  286. package/kit/docs/lab-user.md +0 -35
  287. package/kit/docs/prd-invos-cli.md +0 -264
  288. package/kit/integracoes/README.md +0 -31
  289. package/kit/integracoes/composio/README.md +0 -128
  290. package/kit/integracoes/composio/marketing-tools.md +0 -61
  291. package/kit/marca/README.md +0 -13
  292. package/kit/marca/assets/.gitkeep +0 -0
  293. package/kit/marca/marca.md +0 -57
  294. package/kit/memoria/ativo.md +0 -18
  295. package/kit/memoria/decisoes.md +0 -26
  296. package/kit/memoria/empresa.md +0 -46
  297. package/kit/memoria/historico/README.md +0 -8
  298. package/kit/memoria/insights.md +0 -11
  299. package/kit/memoria/perfil.md +0 -29
  300. package/kit/memoria/projetos.md +0 -27
  301. package/kit/memoria/regras/_TEMPLATE-exemplo.md +0 -15
  302. package/kit/memoria/regras/task-com-dono.md +0 -18
  303. package/kit/scripts/smoke-estado.sh +0 -32
  304. package/kit/scripts/validar.sh +0 -206
package/README.md CHANGED
@@ -1,39 +1,32 @@
1
- # invos
2
-
3
- CLI do **INVOS** — sistema de memória multi-agente em arquivos (prioridade, clientes, proposta, conteúdo).
4
-
5
- ## Install
1
+ # invos (CLI) — INVOS v2
6
2
 
7
3
  ```bash
8
- npx invos@latest init meu-negocio
9
- # ou
10
- npm i -g invos
11
- invos init meu-negocio
4
+ npx invos init --name meu-negocio
5
+ npx invos install
6
+ npx invos update # sem token — kit no npm
7
+ npx invos doctor
12
8
  ```
13
9
 
14
- ## Commands
15
-
16
- | Command | What it does |
17
- |---------|----------------|
18
- | `invos init [dir]` | Cria pasta nova com o kit |
19
- | `invos install` | Injeta INVOS no diretório atual (repo existente) |
20
- | `invos update` | Atualiza skills/sistema; **não** mexe em `memoria/` / clientes reais |
21
- | `invos doctor` | Valida instalação |
22
-
23
- ## After init
10
+ ## Release (você)
24
11
 
25
12
  ```bash
26
- cd meu-negocio
27
- # Abra no Claude / Cursor / Codex / Grok
28
- # Diga: Segue o COMECE-AQUI
13
+ cd packages/cli
14
+ npm run bundle-kit # empacota raiz InvOS.v2 kit/
15
+ npm version patch
16
+ npm publish --access public
29
17
  ```
30
18
 
31
- ## Env (opcional)
19
+ Comunidade: `npx invos@latest update`
32
20
 
33
- | Var | Uso |
34
- |-----|-----|
35
- | `INVOS_KIT_PATH` | Override do kit (dev / kit custom) |
21
+ ## O que o update não toca
36
22
 
37
- ## Site
23
+ `_memoria/`, `marca/*` (conteúdo), `clientes/`, `marketing/*` gerado, `saidas/`, `dados/` real, `.env`
38
24
 
39
- https://inovadigitalid.com/invos
25
+ ## Dev
26
+
27
+ ```bash
28
+ cd packages/cli
29
+ npm run bundle-kit
30
+ node bin/invos.js init --name smoke /tmp/invos-v2-smoke
31
+ node bin/invos.js doctor --dir /tmp/invos-v2-smoke
32
+ ```
package/bin/invos.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { readFileSync } from 'node:fs';
3
- import { fileURLToPath } from 'node:url';
4
3
  import { dirname, resolve } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
5
  import { init } from '../src/commands/init.js';
6
6
  import { install } from '../src/commands/install.js';
7
7
  import { update } from '../src/commands/update.js';
@@ -10,15 +10,14 @@ import { loadManifest } from '../src/manifest.js';
10
10
  import { resolveKitRoot } from '../src/resolve-kit.js';
11
11
 
12
12
  const __dirname = dirname(fileURLToPath(import.meta.url));
13
-
14
13
  const cmd = process.argv[2];
15
14
  const args = process.argv.slice(3);
16
15
 
17
- function extractDir(args) {
18
- const idx = args.indexOf('--dir');
19
- if (idx !== -1 && args[idx + 1]) {
20
- const dir = resolve(process.cwd(), args[idx + 1]);
21
- args.splice(idx, 2);
16
+ function extractDir(list) {
17
+ const idx = list.indexOf('--dir');
18
+ if (idx !== -1 && list[idx + 1]) {
19
+ const dir = resolve(process.cwd(), list[idx + 1]);
20
+ list.splice(idx, 2);
22
21
  return dir;
23
22
  }
24
23
  return null;
@@ -26,53 +25,60 @@ function extractDir(args) {
26
25
 
27
26
  function help() {
28
27
  console.log(`
29
- INVOS CLI — npx invos <command>
28
+ INVOS v2 CLI — npx invos <command>
30
29
 
31
- Commands:
32
- init [dir] Create new INVOS project from scratch
33
- install [--dir <p>] Install INVOS into dir (default: cwd)
34
- update [--dir <p>] Update shipped files, preserve user data
35
- doctor [--dir <p>] Validate installation
30
+ init [--name <slug>] [dir] Novo projeto (kit completo)
31
+ install [--dir <p>] Instala no projeto atual
32
+ update [--dir <p>] Atualiza PRODUCT (preserva memória)
33
+ doctor [--dir <p>] [--fix] Valida instalação
36
34
 
37
- Options:
38
- --help Show this help
39
- --version Show version
35
+ Update: kit bundled no npm — sem token, sem GitHub.
36
+ 1) Você: npm run bundle-kit && npm publish
37
+ 2) Aluno: npx invos@latest update
38
+
39
+ --help --version update --dry-run
40
40
  `);
41
41
  }
42
42
 
43
43
  async function main() {
44
- if (!cmd || cmd === '--help' || cmd === '-h') { help(); return; }
44
+ if (!cmd || cmd === '--help' || cmd === '-h') {
45
+ help();
46
+ return;
47
+ }
45
48
  if (cmd === '--version' || cmd === '-v') {
46
- const pkg = JSON.parse(readFileSync(resolve(__dirname, '../package.json'), 'utf-8'));
49
+ const pkg = JSON.parse(readFileSync(resolve(__dirname, '../package.json'), 'utf8'));
47
50
  console.log(pkg.version);
48
51
  return;
49
52
  }
50
53
 
51
- const KIT_ROOT = resolveKitRoot();
52
- const kit = loadManifest(resolve(KIT_ROOT, 'INVOS.json'));
54
+ const kitRoot = resolveKitRoot();
55
+ const kit = loadManifest(resolve(kitRoot, 'INVOS.json'));
53
56
  if (!kit) {
54
- console.error('INVOS.json not found at', KIT_ROOT);
57
+ console.error('INVOS.json missing in kit:', kitRoot);
55
58
  process.exit(1);
56
59
  }
57
60
 
58
61
  switch (cmd) {
59
62
  case 'init':
60
- await init(kit, KIT_ROOT, args);
63
+ await init(kit, kitRoot, args);
61
64
  break;
62
65
  case 'install':
63
- await install(kit, KIT_ROOT, extractDir(args) || process.cwd(), args);
66
+ await install(kit, kitRoot, extractDir(args) || process.cwd(), args);
64
67
  break;
65
68
  case 'update':
66
- await update(kit, KIT_ROOT, extractDir(args) || process.cwd(), args);
69
+ await update(kit, kitRoot, extractDir(args) || process.cwd(), args);
67
70
  break;
68
71
  case 'doctor':
69
- await doctor(kit, KIT_ROOT, extractDir(args) || process.cwd(), args);
72
+ await doctor(kit, kitRoot, extractDir(args) || process.cwd(), args);
70
73
  break;
71
74
  default:
72
- console.error('Unknown command:', cmd);
75
+ console.error('Unknown:', cmd);
73
76
  help();
74
77
  process.exit(1);
75
78
  }
76
79
  }
77
80
 
78
- main().catch(err => { console.error(err.message); process.exit(1); });
81
+ main().catch(e => {
82
+ console.error(e.message || e);
83
+ process.exit(1);
84
+ });
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: abrir
3
+ description: >
4
+ Abre uma sessão de trabalho carregando a memória do negócio (empresa, preferências, estratégia, marca)
5
+ e devolve um resumo curto pro usuário. Use quando o usuário disser "abrir",
6
+ "começar o dia", "/abrir" ou no primeiro turno de uma sessão depois do /instalar.
7
+ ---
8
+
9
+ # /abrir — Abertura de sessão
10
+
11
+ Curto e direto. O objetivo é carregar contexto e devolver uma síntese de uma frase pra o usuário começar a trabalhar.
12
+
13
+ ## Workflow
14
+
15
+ 1. Ler, em ordem:
16
+ - `_memoria/empresa.md`
17
+ - `_memoria/preferencias.md`
18
+ - `_memoria/estrategia.md`
19
+ - `marca/design-guide.md` (só pra saber se está preenchido ou em branco)
20
+
21
+ 2. Se algum dos três primeiros estiver em branco (placeholder), responder:
22
+ > "Vi que `_memoria/<arquivo>.md` ainda não foi preenchido. Quer rodar `/instalar` agora?"
23
+ E parar.
24
+
25
+ 3. Se tudo estiver preenchido, devolver UMA mensagem curta no formato:
26
+
27
+ ```
28
+ [Nome do negócio] — [o que faz em 5-8 palavras]
29
+ Foco atual: [prioridade da estratégia, em uma frase]
30
+ Tom: [resumo de 3-4 palavras do tom de voz]
31
+
32
+ Pronto. O que vamos fazer?
33
+ ```
34
+
35
+ 4. Não listar quais arquivos foram lidos. Não confirmar leitura. Só usar o contexto.
36
+
37
+ ## Regras
38
+
39
+ - Resposta tem que caber em 5 linhas no terminal
40
+ - Não fazer perguntas além de "o que vamos fazer?"
41
+ - Se o `design-guide.md` estiver em branco, não mencionar — só vira problema quando alguma skill visual for chamada
@@ -0,0 +1,95 @@
1
+ ---
2
+ name: analisar-dados
3
+ description: >
4
+ Analisa um arquivo de dados (CSV, Excel, TXT, JSON) e gera um resumo executivo
5
+ com os principais insights, tendências e recomendações.
6
+ Use quando o usuário disser "analisa esse arquivo", "o que mostram esses dados",
7
+ "resume esses resultados", "analisa esse relatório", ou arrastar um arquivo de dados.
8
+ ---
9
+
10
+ # /analisar-dados — Análise de Arquivo
11
+
12
+ ## Dependências
13
+
14
+ - **Contexto do negócio:** `_memoria/empresa.md` (pra entender o que os dados representam)
15
+ - **Tom de voz:** `_memoria/preferencias.md`
16
+
17
+ ---
18
+
19
+ ## Workflow
20
+
21
+ ### Passo 1 — Entender o contexto
22
+
23
+ Antes de analisar, perguntar se não estiver claro:
24
+ - "O que é esse arquivo? (vendas, anúncios, métricas, respostas de pesquisa...)"
25
+ - "Qual é a pergunta principal que você quer responder com esses dados?"
26
+
27
+ Se o contexto estiver óbvio pelo nome do arquivo ou pelo conteúdo, prossegue sem perguntar.
28
+
29
+ ### Passo 2 — Ler o arquivo
30
+
31
+ Ler o arquivo fornecido. Se for Excel (.xlsx), ler com as ferramentas disponíveis pra extrair o conteúdo das células.
32
+
33
+ ### Passo 3 — Análise
34
+
35
+ Identificar e reportar:
36
+
37
+ **O que está bom:**
38
+ - Métricas acima da média ou em crescimento
39
+ - Padrões positivos nos dados
40
+ - Top performers (produtos, campanhas, períodos, etc)
41
+
42
+ **O que preocupa:**
43
+ - Quedas, anomalias ou tendências negativas
44
+ - O que está abaixo do esperado
45
+ - Gargalos ou desperdícios visíveis
46
+
47
+ **Comparações:**
48
+ - Período atual vs período anterior (se houver)
49
+ - Top vs bottom performers
50
+ - Distribuição entre categorias
51
+
52
+ **Insights não óbvios:**
53
+ - Correlações interessantes
54
+ - Padrões que não aparecem na leitura superficial
55
+
56
+ ### Passo 4 — Output
57
+
58
+ Gerar um resumo executivo em prosa (não só bullet points):
59
+
60
+ ```markdown
61
+ # Análise — [Nome do Arquivo/Relatório]
62
+ *[Data da análise]*
63
+
64
+ ## O que esses dados mostram
65
+ [2-3 parágrafos com o panorama geral]
66
+
67
+ ## O que está funcionando
68
+ [lista com contexto]
69
+
70
+ ## O que merece atenção
71
+ [lista com contexto]
72
+
73
+ ## 3 recomendações
74
+ 1. [ação concreta]
75
+ 2. [ação concreta]
76
+ 3. [ação concreta]
77
+
78
+ ## Números-chave
79
+ | Métrica | Valor | Contexto |
80
+ |---------|-------|---------|
81
+ | ... | ... | ... |
82
+ ```
83
+
84
+ Salvar em `estudos/analise-[nome]-[data].md` ou na pasta mais adequada pro perfil do usuário.
85
+
86
+ Perguntar se quer exportar o resumo em HTML pra compartilhar ou apresentar.
87
+
88
+ ---
89
+
90
+ ## Regras
91
+
92
+ - Análise em prosa, não só listas — o usuário deve poder ler e entender sem abrir o arquivo original
93
+ - Nunca inventar dados que não estão no arquivo
94
+ - Se os dados estiverem incompletos ou com problemas, mencionar antes de analisar
95
+ - Tom conforme `_memoria/preferencias.md`
@@ -0,0 +1,174 @@
1
+ ---
2
+ name: anuncio-google
3
+ description: >
4
+ Cria estrutura completa de campanha do Google Ads a partir de um briefing ou da pesquisa SEO.
5
+ Gera CSV pronto pra importar no Google Ads Editor com campanhas Search organizadas por cluster
6
+ de palavras-chave, grupos de anúncios, RSAs (Responsive Search Ads), extensões e palavras-chave
7
+ negativas. Lê o briefing de _memoria/empresa.md e da pesquisa SEO se existir.
8
+ Use quando o usuário pedir "criar campanha google ads", "anúncio google", "google ads",
9
+ "csv pro google ads", ou /anuncio-google.
10
+ ---
11
+
12
+ # /anuncio-google — Estrutura de campanha Google Ads
13
+
14
+ Skill que monta a campanha inteira em CSV pronto pra importar no Google Ads Editor. Sai do briefing direto pro CSV — sem montar grupo por grupo na mão na interface do Google.
15
+
16
+ ## Dependências
17
+
18
+ - **Contexto do negócio:** `_memoria/empresa.md` (produto/serviço, público, região, diferenciais)
19
+ - **Tom de voz:** `_memoria/preferencias.md`
20
+ - **Pesquisa SEO (se existir):** `marketing/seo/01-pesquisa-demanda.md`, `06-google-ads.md` — usar como insumo
21
+ - **Outputs vão em:** `marketing/campanhas/google-ads-<YYYY-MM-DD>/`
22
+
23
+ ---
24
+
25
+ ## Workflow
26
+
27
+ ### Passo 1 — Briefing
28
+
29
+ Se o usuário não passou briefing, perguntar:
30
+
31
+ 1. **Produto/serviço a anunciar?** (1-3 linhas)
32
+ 2. **Quem é o público?** (perfil, dor que resolve)
33
+ 3. **Região:** raio em km a partir de qual cidade?
34
+ 4. **Orçamento diário?** (R$/dia)
35
+ 5. **Objetivo:** ligações / WhatsApp / formulário / visita?
36
+ 6. **Site/landing page** existe? URL?
37
+
38
+ Se já existe `marketing/seo/06-google-ads.md` (criado pelo `/seo`), usar como base — pular as perguntas que já foram respondidas lá.
39
+
40
+ ### Passo 2 — Pesquisa de palavras-chave
41
+
42
+ Se já existe `marketing/seo/01-pesquisa-demanda.md`, usar o top 10-20 de termos prioritários (intenção transacional + comercial).
43
+
44
+ Se não existe, gerar:
45
+ - 30-50 termos-semente baseados no briefing
46
+ - WebSearch pra cada grupo: ver concorrência, sazonalidade
47
+ - Filtrar pelos de **intenção comercial/transacional** (descartar informacionais)
48
+ - Agrupar em **clusters** (ex: "feijoada-buffet", "feijoada-restaurante", "feijoada-evento")
49
+
50
+ ### Passo 3 — Estrutura de campanha
51
+
52
+ **Padrão recomendado pra B2B local:**
53
+
54
+ ```
55
+ Campanha 1: <Negócio> — Search Geral
56
+ ├── Grupo: <Cluster 1>
57
+ │ ├── 10-15 keywords (mix de exata, frase, ampla modificada)
58
+ │ ├── 3 RSAs (15 headlines + 4 descriptions cada)
59
+ │ └── 10-15 keywords negativas no grupo
60
+ ├── Grupo: <Cluster 2>
61
+ │ └── ...
62
+ └── ... (1 grupo por cluster do Passo 2)
63
+
64
+ Campanha 2: <Negócio> — Local (opcional)
65
+ ├── Anúncios pra Google Maps
66
+ └── Segmentação por proximidade
67
+
68
+ Lista de negativas globais: termos genéricos descartados, marcas concorrentes
69
+ ```
70
+
71
+ ### Passo 4 — Copies (RSAs)
72
+
73
+ Pra cada grupo, gerar 3 RSAs (Responsive Search Ads):
74
+
75
+ **15 headlines** por anúncio:
76
+ - 5 com keyword principal
77
+ - 3 com diferenciais concretos (certificações, prazo, garantia)
78
+ - 3 com CTA ("Solicite cotação", "Peça pelo WhatsApp", "Fale agora")
79
+ - 2 com prova social (anos no mercado, número de clientes)
80
+ - 2 com proposta de valor genérica
81
+
82
+ **4 descriptions** (90 caracteres cada):
83
+ - 1 institucional + CTA
84
+ - 1 com diferencial técnico + CTA
85
+ - 1 com urgência/escassez (se aplicável)
86
+ - 1 com prova social + CTA
87
+
88
+ **Restrições do Google:**
89
+ - Headline: 30 caracteres
90
+ - Description: 90 caracteres
91
+ - Sem emojis, sem caps lock, sem repetição de palavras
92
+ - Sem afirmações superlativas não-comprovadas ("o melhor", "número 1") sem fonte
93
+
94
+ Seguir `_memoria/preferencias.md` pra tom.
95
+
96
+ ### Passo 5 — Extensões
97
+
98
+ Gerar CSVs separados pra cada tipo de extensão:
99
+
100
+ - **Sitelinks** (4-6): "Sobre nós", "Catálogo", "Cases", "WhatsApp", "Localização"
101
+ - **Chamadas** (telefone): puxar de `_memoria/empresa.md`
102
+ - **Snippets estruturados:** lista de serviços, categorias de produto
103
+ - **Preço** (se aplicável): faixas de preço dos serviços principais
104
+ - **Promoção** (se aplicável): desconto, condição especial
105
+
106
+ ### Passo 6 — Configurações da campanha
107
+
108
+ Gerar arquivo `configuracoes.md` com:
109
+
110
+ - **Estratégia de lance:** "Maximizar conversões" pra começar (depois migrar pra "Maximizar conversões com tCPA" quando tiver 30+ conversões)
111
+ - **Orçamento diário:** conforme briefing
112
+ - **Segmentação geográfica:** raio em km a partir do endereço
113
+ - **Idioma:** Português
114
+ - **Dispositivos:** ajustes de lance recomendados (mobile +0%, desktop +0%, tablet -20%)
115
+ - **Programação:** dias e horários conforme negócio
116
+ - **Conversões a configurar:** clique no WhatsApp, envio de formulário, ligação telefônica, tempo no site
117
+
118
+ ### Passo 7 — Gerar os CSVs
119
+
120
+ Estrutura de pastas final:
121
+
122
+ ```
123
+ marketing/campanhas/google-ads-<YYYY-MM-DD>/
124
+ campanhas.csv ← linha por campanha
125
+ grupos.csv ← linha por grupo de anúncio
126
+ keywords.csv ← keywords + match type
127
+ keywords-negativas.csv ← negativas por grupo + lista global
128
+ anuncios.csv ← RSAs (headlines + descriptions)
129
+ extensoes-sitelinks.csv
130
+ extensoes-chamadas.csv
131
+ extensoes-snippets.csv
132
+ extensoes-preco.csv (se aplicável)
133
+ configuracoes.md ← config + checklist de import
134
+ README.md ← passo a passo pra importar no Google Ads Editor
135
+ ```
136
+
137
+ **Formato dos CSVs:** seguir o padrão de importação do Google Ads Editor (colunas: Campaign, Ad group, Keyword, Match type, Status, Max CPC, etc.).
138
+
139
+ ### Passo 8 — Resumo + próximos passos
140
+
141
+ Mostrar pro usuário:
142
+
143
+ ```
144
+ ✓ Campanha pronta: marketing/campanhas/google-ads-<YYYY-MM-DD>/
145
+
146
+ Estrutura:
147
+ - <N> campanhas
148
+ - <N> grupos de anúncio
149
+ - <N> palavras-chave (positivas)
150
+ - <N> palavras-chave negativas
151
+ - <N> RSAs
152
+
153
+ Pra subir:
154
+ 1. Abrir Google Ads Editor (desktop)
155
+ 2. Conta → Importar → CSV
156
+ 3. Subir campanhas.csv primeiro, depois grupos, keywords, anúncios, extensões
157
+ 4. Revisar status (tudo "pausado" inicialmente — ativar manualmente)
158
+ 5. Conferir conversões configuradas no Google Tag Manager
159
+ 6. Ativar campanha quando estiver tudo OK
160
+
161
+ Sugestão de orçamento inicial: R$<X>/dia por <Y> dias antes de avaliar.
162
+ ```
163
+
164
+ ---
165
+
166
+ ## Regras
167
+
168
+ - **Nunca inventar dados de CPC.** Se o cliente perguntar quanto vai custar, falar que depende da concorrência real e dar uma faixa baseada em WebSearch.
169
+ - **Sempre começar pausado.** Cliente revisa, ativa quando aprovar.
170
+ - **Não anunciar pra termos informacionais.** "Como fazer X" raramente converte — deixar pra SEO orgânico.
171
+ - **Match type:** começar com Phrase Match na maioria. Exact pra termos premium. Broad só com dados consistentes.
172
+ - **Lista de negativas global** é obrigatória — sem ela, queima dinheiro em buscas irrelevantes.
173
+ - **Conversões antes de tudo.** Sem conversão configurada, o Google não otimiza — relatar isso e pedir setup antes de ativar.
174
+ - Copies seguem `_memoria/preferencias.md` estritamente. Sem jargão de marketing se o público não usa.
@@ -0,0 +1,151 @@
1
+ ---
2
+ name: aprovar-post
3
+ description: >
4
+ Aprova e publica um post da fila — flipa o blog de draft pra published, copia os PNGs do
5
+ carrossel pro public folder do site, faz commit e push (Netlify/Vercel deploya), aguarda
6
+ o deploy, e posta o carrossel no Instagram + Facebook via Meta Graph API. Use quando o
7
+ usuário disser "aprovar post X", "publicar o post do tema Y", "/aprovar-post X", ou quando
8
+ quiser disparar a publicação automática de um conteúdo já criado pela skill /publicar-tema.
9
+ ---
10
+
11
+ # /aprovar-post — Pipeline de aprovação e publicação automática
12
+
13
+ Faz a ponte entre o conteúdo aprovado (blog + carrossel + legendas, criado por `/publicar-tema`)
14
+ e a publicação real no feed (site + Instagram + Facebook).
15
+
16
+ ## Quando NÃO usar
17
+
18
+ - Conteúdo ainda não foi criado → use `/publicar-tema` primeiro
19
+ - Usuário ainda está revisando → não rodar até ele dizer "aprovado" / "pode postar"
20
+ - Site não está deployado / Meta API não configurada → seguir setup abaixo
21
+
22
+ ## Pré-requisitos (uma vez só)
23
+
24
+ - `.env` na raiz com:
25
+ - `META_PAGE_ACCESS_TOKEN` — token de longa duração da Página FB
26
+ - `META_PAGE_ID` — ID da Página FB
27
+ - `META_IG_USER_ID` — ID da conta Insta Business
28
+ - `SITE_URL` — ex: `https://exemplo.com.br`
29
+ - Site com deploy automático a partir do `main` do GitHub (Netlify, Vercel, etc.)
30
+ - Conta Insta Business conectada à Página FB
31
+ - Página FB com permissões corretas no Meta App
32
+ - Scripts `scripts/postar-instagram.js` e `scripts/postar-facebook.js` configurados
33
+
34
+ Se algo disso faltar: parar e apontar pro guia de setup (criar `marketing/automacao-meta-setup.md` se ainda não existir).
35
+
36
+ ## Argumento
37
+
38
+ `/aprovar-post <slug>` — onde `<slug>` é o nome do arquivo do blog **sem `.md`**.
39
+
40
+ Exemplo: `/aprovar-post como-conservar-produto`
41
+
42
+ Se o usuário não passou slug, listar os blogs em draft (arquivos com `draft: true`) e perguntar qual.
43
+
44
+ ## Workflow
45
+
46
+ ### Passo 1 — Localizar arquivos
47
+
48
+ - Blog: `site/.../blog/<slug>.md` (caminho depende do stack — Astro, Hugo, etc.)
49
+ - Carrossel: procurar `marketing/conteudo/<slug>-*` (a pasta tem sufixo de data)
50
+ - Validar que existem PNGs em `<pasta-carrossel>/instagram/slide-XX.png` (2 a 10)
51
+ - Validar que existem `legenda.md` e `legenda-linkedin.md`
52
+
53
+ Se faltar qualquer um, parar e relatar.
54
+
55
+ ### Passo 2 — Mostrar resumo + pedir confirmação final
56
+
57
+ Mostrar pro usuário:
58
+ - Título do blog
59
+ - Quantos slides do carrossel
60
+ - Primeiras 200 chars da legenda
61
+ - URL final que vai ser publicada
62
+
63
+ Perguntar: **"Confirma publicação? (sim/não)"**. Só seguir se ele disser sim.
64
+
65
+ ### Passo 3 — Flipar draft pra false
66
+
67
+ Editar o frontmatter do blog: `draft: true` → `draft: false`.
68
+
69
+ ### Passo 4 — Copiar PNGs pro public folder do site
70
+
71
+ - Origem: `marketing/conteudo/<slug>-<data>/instagram/slide-*.png`
72
+ - Destino: `site/.../public/img/posts/<slug>/slide-*.png`
73
+ - Criar pasta de destino se não existir
74
+ - Sobrescrever se já existir (caso seja re-publicação)
75
+
76
+ ### Passo 5 — Commit + push
77
+
78
+ ```bash
79
+ git add site/<caminho>/blog/<slug>.md site/<caminho>/public/img/posts/<slug>/
80
+ git commit -m "publicar: <título do blog>"
81
+ git push origin main
82
+ ```
83
+
84
+ Esperar push terminar com sucesso.
85
+
86
+ ### Passo 6 — Aguardar deploy
87
+
88
+ Deploy automático (Netlify/Vercel) leva ~1-2 min. Validar que o post está no ar:
89
+
90
+ ```bash
91
+ curl -sf -o /dev/null -w "%{http_code}" "$SITE_URL/blog/$slug/"
92
+ ```
93
+
94
+ Aguardar HTTP 200 (com timeout de 5 min). Também checar que pelo menos `slide-01.png` está acessível:
95
+
96
+ ```bash
97
+ curl -sf -o /dev/null -w "%{http_code}" "$SITE_URL/img/posts/$slug/slide-01.png"
98
+ ```
99
+
100
+ Sem isso, a Meta API vai falhar — ela busca a imagem por URL pública.
101
+
102
+ ### Passo 7 — Postar no Instagram
103
+
104
+ ```bash
105
+ node --env-file=.env scripts/postar-instagram.js marketing/conteudo/<slug>-<data>
106
+ ```
107
+
108
+ Capturar o post id retornado. Se falhar, **não seguir pra Facebook** — relatar e parar.
109
+
110
+ ### Passo 8 — Postar no Facebook
111
+
112
+ ```bash
113
+ node --env-file=.env scripts/postar-facebook.js marketing/conteudo/<slug>-<data>
114
+ ```
115
+
116
+ Capturar o post id retornado.
117
+
118
+ ### Passo 9 — LinkedIn
119
+
120
+ LinkedIn é manual por enquanto (API de empresa precisa de aprovação demorada). Mostrar pro usuário:
121
+
122
+ ```
123
+ LinkedIn: cole esse texto manualmente em https://linkedin.com/in/<seu-perfil>:
124
+ <conteúdo de legenda-linkedin.md>
125
+ ```
126
+
127
+ ### Passo 10 — Resumo
128
+
129
+ Mostrar:
130
+ ```
131
+ ✓ Post publicado: <título>
132
+
133
+ Site: <SITE_URL>/blog/<slug>/
134
+ Instagram: <link do post>
135
+ Facebook: <link do post>
136
+ LinkedIn: pendente — texto pronto em legenda-linkedin.md (postar manual)
137
+ ```
138
+
139
+ ## Tratamento de erro
140
+
141
+ - Push falhou: rollback do `draft: false` (restaura `draft: true`), relata e para
142
+ - Deploy não subiu em 5 min: relata, pergunta se quer continuar mesmo assim ou abortar
143
+ - Insta API falhou: para e relata. Site já está no ar, blog publicado — só o post no feed que não foi
144
+ - FB falhou mas Insta OK: relata, sugere tentar de novo só o FB depois
145
+
146
+ ## Princípios
147
+
148
+ 1. **Confirmação humana antes de qualquer coisa irreversível.** Nunca pular o passo 2.
149
+ 2. **Idempotente onde possível.** Re-rodar com mesmo slug deve detectar publicação prévia (blog não-draft, PNGs já no public/) e perguntar se é pra re-postar ou só atualizar.
150
+ 3. **Falha cedo, falha alto.** Qualquer pré-requisito faltando = abortar e explicar o que falta.
151
+ 4. **Logar tudo.** Cada passo imprime o que está fazendo e o resultado.