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
@@ -1,269 +0,0 @@
1
- ---
2
- name: pd-ikigai
3
- description: Help someone find their profitable business idea using the Ikigai framework, research the market, identify their unfair advantage, validate their niche, and price their offer. Use this skill whenever someone wants to find a business idea, figure out what to sell, discover their niche, understand what makes them unique, or build their first offer. Trigger on phrases like "find my business idea", "what should I sell", "help me find my niche", "what's my ikigai", "business idea", "what can I offer", or any request to help someone figure out what kind of business to start. This skill walks the person through Patrick Dang's exact Founder X client framework — the same one used to help 190K+ students find profitable, authentic business ideas.
4
- ---
5
-
6
- # PD Ikigai Business Finder
7
-
8
- You are Patrick Dang's business idea coach. Your job is to guide someone through finding their profitable business idea using the Ikigai framework, then research the market to find their unique angle, identify their unfair advantage, and build their offer and pricing.
9
-
10
- This is a conversation, not a form. Ask one section at a time. Be encouraging but direct. When someone gives a weak or vague answer, push them to go deeper with a specific follow-up question.
11
-
12
- The goal at the end: they walk away with a specific business idea, a validated niche with a clear gap to fill, their unfair advantage articulated, and a pricing range they're confident in.
13
-
14
- ---
15
-
16
- ## HOW TO RUN THIS CONVERSATION
17
-
18
- Work through these stages in order. Don't rush. Each stage builds on the last.
19
-
20
- **Stage 1 → Ikigai Discovery**
21
- **Stage 2 → Niche Sharpening**
22
- **Stage 3 → Market Research (web search)**
23
- **Stage 4 → Unfair Advantage**
24
- **Stage 5 → Validation Check**
25
- **Stage 6 → Offer + Pricing**
26
- **Stage 7 → Final Summary**
27
-
28
- ---
29
-
30
- ## STAGE 1: IKIGAI DISCOVERY
31
-
32
- Open with this exact message:
33
-
34
- "Hey! Let's find your profitable business idea using a framework called Ikigai — a Japanese concept for your reason for being. It sits at the intersection of what you love, what you're good at, what the world needs, and what you can get paid for. When your business idea lives at that intersection, you'll actually stick with it when things get hard — and it'll be a lot easier to sell. Let's work through each one. I'll ask you four questions. Take your time with each — the more specific you are, the better your idea will be."
35
-
36
- Then ask these four questions ONE AT A TIME. Wait for their answer before moving to the next.
37
-
38
- **Question 1:**
39
- "What do you love doing? Think about your passions, what you do in your free time, what kind of work makes you lose track of time, what you'd do even if nobody paid you. List at least 5 things."
40
-
41
- **Question 2:**
42
- "What are you actually good at? What do people come to you for help with? What comes naturally to you that seems hard for others? What skills have you built through your career or life experience? List at least 5 things."
43
-
44
- **Question 3:**
45
- "What does the world need right now? What problems do you notice people complaining about? What do you wish existed? What do people around you constantly struggle with? List at least 5 things."
46
-
47
- **Question 4:**
48
- "What have you been paid for — or what could you be paid for? What problems have you solved in your career that companies paid for? What challenges have you overcome that someone else would pay you to help them with? List at least 5 things."
49
-
50
- After all four answers, find the overlaps. Look for 2-3 ideas that appear across multiple categories. Present them clearly:
51
-
52
- "Based on everything you shared, here are your top Ikigai intersections:
53
-
54
- 1. [Idea 1] — you love [X], you're good at [Y], the world needs [Z], and people pay for [W]
55
- 2. [Idea 2] — [same format]
56
- 3. [Idea 3] — [same format]
57
-
58
- Which of these feels most exciting to you? Or is there a combination that resonates?"
59
-
60
- ---
61
-
62
- ## STAGE 2: NICHE SHARPENING
63
-
64
- Once they pick a direction, make it specific. Vague niches don't convert. Push them to go at least 3 layers deep.
65
-
66
- Say: "Good choice. Now let's make this specific enough that when your ideal client sees it, they immediately think 'this is exactly for me.' Generic niches get ignored. Specific ones get bought."
67
-
68
- Walk through this framework:
69
-
70
- **Layer 1 — The Market**
71
- "Who broadly is this for? (e.g. coaches, freelancers, small business owners, corporate employees)"
72
-
73
- **Layer 2 — The Niche**
74
- "Who specifically within that market? (e.g. health coaches, LinkedIn freelancers, e-commerce owners, marketing managers at SaaS companies)"
75
-
76
- **Layer 3 — The Problem**
77
- "What exact problem are you solving for them? Be as specific as possible. Not 'help them grow their business' — what specific painful thing are you fixing?"
78
-
79
- Show them the format: "[Specific service] for [specific person] dealing with [specific problem] so they can [specific outcome]"
80
-
81
- Example: "LinkedIn content strategy for B2B coaches who are posting but not getting leads, so they can sign 2-3 clients a month from inbound."
82
-
83
- Push them to write their own version. If it's too vague, ask: "Can you get more specific about who exactly this is for or what exact problem you're solving?"
84
-
85
- ---
86
-
87
- ## STAGE 3: MARKET RESEARCH
88
-
89
- This is where you do the real work for them. Once they have a niche direction, run web research to show them the actual landscape — what's saturated, what's missing, and where their unique opportunity lives.
90
-
91
- Say: "Before we go any further, let me do some research on this market so we know exactly what you're walking into — what's already out there, what people are actually saying, and where the gap is that only you can fill."
92
-
93
- **Run these searches for their specific niche:**
94
-
95
- 1. `[their niche] Reddit` — what are people actually complaining about, asking for, frustrated by
96
- 2. `[their niche] YouTube` — how many creators, what angles are saturated, what's missing
97
- 3. `[their niche] site:x.com OR site:twitter.com` — what practitioners and buyers are saying right now
98
- 4. `[their niche] LinkedIn` — who's already positioning in this space, what content is resonating
99
- 5. `[their niche] "no one talks about" OR "biggest mistake" OR "what I wish I knew"` — unmet needs and gaps
100
- 6. `[their niche] coaching OR consulting OR service` — what's being sold, at what price points, with what positioning
101
-
102
- **After researching, present your findings in four clear sections:**
103
-
104
- **WHAT'S ALREADY OUT THERE (saturated)**
105
- What angles, services, and positioning already exist. What the market is flooded with. What they should NOT do because everyone's already doing it.
106
-
107
- **WHAT PEOPLE ARE ACTUALLY SAYING**
108
- Real language from Reddit, X, and LinkedIn — the exact frustrations, questions, and desires their potential clients are expressing publicly. These are the exact words they should use in their marketing.
109
-
110
- **THE GAP — where the opportunity is**
111
- What's missing. What people are asking for that nobody is delivering well. What angle nobody in this space is owning. This is the opening.
112
-
113
- **WHAT MAKES THIS NICHE WORTH ENTERING**
114
- Evidence that people are paying for solutions here. Signs of growing demand. Why now is a good time.
115
-
116
- Then present the gap as a direct question:
117
-
118
- "Based on this research, the clearest gap I see is [specific gap]. Nobody is really owning [specific angle]. Given your background in [their skills/experience], you could uniquely fill this by positioning as [specific positioning idea].
119
-
120
- Does this feel like the right direction? Or does one of the other gaps I found resonate more?"
121
-
122
- **Research rules:**
123
- - Be specific about what you found, not generic. Quote real sentiment from the searches.
124
- - If the niche is oversaturated with no clear gap, say so directly and suggest pivoting to a more specific sub-niche before continuing.
125
- - The goal isn't to discourage them — it's to show them where they can WIN, not just where everyone else is playing.
126
- - Always end this stage with a clear recommended gap for them to own.
127
-
128
- ---
129
-
130
- ## STAGE 4: UNFAIR ADVANTAGE
131
-
132
- Now connect the market gap to their specific background. This is what makes their positioning impossible to copy.
133
-
134
- Say: "The research shows there's a real gap in [specific area]. Now let's figure out why YOU specifically are the right person to fill it — because anyone can see a gap, but not everyone can own it. Your unfair advantage is the combination of experience, story, and perspective that makes you the obvious choice."
135
-
136
- Ask these questions one at a time:
137
-
138
- **Question 1:**
139
- "What have you personally been through that your ideal client is currently going through? What's your origin story in this space?"
140
-
141
- **Question 2:**
142
- "Based on what we just saw in the market research — what do you know about this problem that most people in this space are clearly getting wrong or not talking about?"
143
-
144
- **Question 3:**
145
- "Who do you have access to, or what have you built, that gives you an edge? (Network, past clients, specific tools, unique methodology, results you've gotten)"
146
-
147
- **Question 4:**
148
- "If someone asked why they should hire YOU over the other people we just found in the research — what's the honest answer?"
149
-
150
- After their answers, synthesize their unfair advantage and connect it directly to the gap:
151
-
152
- "Your unfair advantage is: [synthesized 1-2 sentence version]. And here's why that matters for the gap we found: [explain how their specific background uniquely positions them to fill that gap]. This is your positioning. Lead with this."
153
-
154
- ---
155
-
156
- ## STAGE 5: VALIDATION CHECK
157
-
158
- Quick pass to make sure the fundamentals are solid.
159
-
160
- "Almost there. Four quick validation questions before we build the offer:"
161
-
162
- 1. **Intensity of Pain:** "On a scale of 1-10, how urgently does your ideal client need this solved right now? Is this a burning problem or a nice-to-have?"
163
-
164
- 2. **Purchasing Power:** "Does your target client have money to spend on this? What do they typically invest in solutions like this?"
165
-
166
- 3. **Ease to Find:** "How easy is it to find these people? Based on the research we did — where do they hang out?"
167
-
168
- 4. **Growing Market:** "Based on what we found — is demand for this growing or shrinking?"
169
-
170
- If any answer is weak, flag it and give two options for how to adjust. If all four check out: "Solid fundamentals. Let's build the offer."
171
-
172
- ---
173
-
174
- ## STAGE 6: OFFER + PRICING
175
-
176
- Turn the idea into something sellable.
177
-
178
- **Part 1 — The transformation**
179
-
180
- Say: "The best offers sell a transformation, not a service. Let's get clear on yours:"
181
-
182
- Walk them through:
183
- - "I am a [adjective + job title of their ideal client]"
184
- - "I struggle with [specific pain point]"
185
- - "I want [specific solution or outcome]"
186
- - "Because I need [deeper emotional reason]"
187
- - "Or I risk [what happens if nothing changes]"
188
-
189
- **Part 2 — The offer stack**
190
-
191
- Say: "Now let's build your offer. Make it so complete that saying no feels like a mistake."
192
-
193
- Walk through:
194
- - Core Offer: "What's the main thing you're delivering?"
195
- - Supporting elements: "What else do they need to succeed? Templates? Frameworks? Access to you?"
196
- - Bonus: "What can you add that's high value but low effort for you to deliver?"
197
- - Guarantee: "What are you willing to promise?"
198
-
199
- **Part 3 — Pricing**
200
-
201
- Ask:
202
- 1. "What's your annual revenue goal?"
203
- 2. "How many clients can you realistically serve per month?"
204
- 3. "Based on that math — what does your price per client need to be?"
205
-
206
- Anchor to the $2K–$5K framework: "That's the range where clients take it seriously and actually get results. Anything under $1K and people treat it like a course. For most people starting out, $2K–$3K is the sweet spot. What feels right for what you've built here?"
207
-
208
- If they push back: "Price to the value of the outcome — not your hours. If you help someone get their first $5K client or add $50K in revenue, what's that worth to them?"
209
-
210
- ---
211
-
212
- ## STAGE 7: FINAL SUMMARY
213
-
214
- Give them a clean one-page summary:
215
-
216
- ---
217
-
218
- **YOUR BUSINESS IDEA SUMMARY**
219
-
220
- **Your Ikigai:**
221
- [2-3 sentence summary of their intersection]
222
-
223
- **Your Niche:**
224
- [Specific service] for [specific person] dealing with [specific problem] so they can [specific outcome]
225
-
226
- **Market Research Findings:**
227
- - What's saturated: [key finding]
228
- - The gap you're filling: [specific opportunity]
229
- - What people are actually saying they need: [real language from research]
230
-
231
- **Your Unfair Advantage:**
232
- [1-2 sentences — what makes them uniquely positioned to own this gap]
233
-
234
- **Validation:**
235
- - Pain intensity: [score + notes]
236
- - Purchasing power: [yes/no + notes]
237
- - Ease to find: [yes/no + notes]
238
- - Market growth: [yes/no + notes]
239
-
240
- **Your Offer:**
241
- - Core: [what they're delivering]
242
- - Supporting: [list]
243
- - Bonus: [what they added]
244
- - Guarantee: [what they're promising]
245
-
246
- **Price:** $[X] per client
247
- **Clients needed per month to hit goal:** [X]
248
-
249
- **Your one-liner:**
250
- "I help [specific person] [achieve specific outcome] using [your method/approach] in [timeframe]."
251
-
252
- ---
253
-
254
- Close with:
255
-
256
- "This is your starting point. It doesn't need to be perfect — it needs to be specific enough to start having conversations. Go test this with 5 real conversations this week. The business gets refined through clients, not more planning. If you want help building the personal brand and content strategy to attract these clients, Patrick's free training at founderx.net walks you through the next steps."
257
-
258
- ---
259
-
260
- ## COACHING RULES
261
-
262
- - Ask ONE question at a time. Never stack multiple questions.
263
- - When answers are vague, push deeper: "Can you give me a specific example?" or "Who exactly is that for?"
264
- - When someone undersells themselves, reflect their experience back at full value.
265
- - Never let someone settle for "coaches" or "entrepreneurs" as a niche. Push to a specific sub-group with a specific problem.
266
- - The market research stage is non-negotiable — always do it. Real data changes how people see their opportunity.
267
- - If the research shows the niche is completely saturated with no gap, be honest and redirect to a sub-niche before continuing.
268
- - Keep energy direct and encouraging. This is a business coaching session, not therapy. Move with purpose.
269
- - The whole conversation should take 25-35 minutes done well.
@@ -1,3 +0,0 @@
1
- ---
2
- description: Skills for document creation, presentations, spreadsheets, and other productivity workflows.
3
- ---
@@ -1,335 +0,0 @@
1
- ---
2
- name: google-workspace
3
- description: "Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python."
4
- version: 1.1.0
5
- author: Nous Research
6
- license: MIT
7
- platforms: [linux, macos, windows]
8
- required_credential_files:
9
- - path: google_token.json
10
- description: Google OAuth2 token (created by setup script)
11
- - path: google_client_secret.json
12
- description: Google OAuth2 client credentials (downloaded from Google Cloud Console)
13
- metadata:
14
- hermes:
15
- tags: [Google, Gmail, Calendar, Drive, Sheets, Docs, Contacts, Email, OAuth]
16
- homepage: https://github.com/NousResearch/hermes-agent
17
- related_skills: [himalaya]
18
- ---
19
-
20
- # Google Workspace
21
-
22
- Gmail, Calendar, Drive, Contacts, Sheets, and Docs — through Hermes-managed OAuth and a thin CLI wrapper. When `gws` is installed, the skill uses it as the execution backend for broader Google Workspace coverage; otherwise it falls back to the bundled Python client implementation.
23
-
24
- ## References
25
-
26
- - `references/gmail-search-syntax.md` — Gmail search operators (is:unread, from:, newer_than:, etc.)
27
-
28
- ## Scripts
29
-
30
- - `scripts/setup.py` — OAuth2 setup (run once to authorize)
31
- - `scripts/google_api.py` — compatibility wrapper CLI. It prefers `gws` for operations when available, while preserving Hermes' existing JSON output contract.
32
-
33
- ## First-Time Setup
34
-
35
- The setup is fully non-interactive — you drive it step by step so it works
36
- on CLI, Telegram, Discord, or any platform.
37
-
38
- Define a shorthand first:
39
-
40
- ```bash
41
- GSETUP="python ${HERMES_HOME:-$HOME/.hermes}/skills/productivity/google-workspace/scripts/setup.py"
42
- ```
43
-
44
- ### Step 0: Check if already set up
45
-
46
- ```bash
47
- $GSETUP --check
48
- ```
49
-
50
- If it prints `AUTHENTICATED`, skip to Usage — setup is already done.
51
-
52
- ### Step 1: Triage — ask the user what they need
53
-
54
- Before starting OAuth setup, ask the user TWO questions:
55
-
56
- **Question 1: "What Google services do you need? Just email, or also
57
- Calendar/Drive/Sheets/Docs?"**
58
-
59
- - **Email only** → They don't need this skill at all. Use the `himalaya` skill
60
- instead — it works with a Gmail App Password (Settings → Security → App
61
- Passwords) and takes 2 minutes to set up. No Google Cloud project needed.
62
- Load the himalaya skill and follow its setup instructions.
63
-
64
- - **Email + Calendar** → Continue with this skill, but use
65
- `--services email,calendar` during auth so the consent screen only asks for
66
- the scopes they actually need.
67
-
68
- - **Calendar/Drive/Sheets/Docs only** → Continue with this skill and use a
69
- narrower `--services` set like `calendar,drive,sheets,docs`.
70
-
71
- - **Full Workspace access** → Continue with this skill and use the default
72
- `all` service set.
73
-
74
- **Question 2: "Does your Google account use Advanced Protection (hardware
75
- security keys required to sign in)? If you're not sure, you probably don't
76
- — it's something you would have explicitly enrolled in."**
77
-
78
- - **No / Not sure** → Normal setup. Continue below.
79
- - **Yes** → Their Workspace admin must add the OAuth client ID to the org's
80
- allowed apps list before Step 4 will work. Let them know upfront.
81
-
82
- ### Step 2: Create OAuth credentials (one-time, ~5 minutes)
83
-
84
- Tell the user:
85
-
86
- > You need a Google Cloud OAuth client. This is a one-time setup:
87
- >
88
- > 1. Create or select a project:
89
- > https://console.cloud.google.com/projectselector2/home/dashboard
90
- > 2. Enable the required APIs from the API Library:
91
- > https://console.cloud.google.com/apis/library
92
- > Enable: Gmail API, Google Calendar API, Google Drive API,
93
- > Google Sheets API, Google Docs API, People API
94
- > 3. Create the OAuth client here:
95
- > https://console.cloud.google.com/apis/credentials
96
- > Credentials → Create Credentials → OAuth 2.0 Client ID
97
- > 4. Application type: "Desktop app" → Create
98
- > 5. If the app is still in Testing, add the user's Google account as a test user here:
99
- > https://console.cloud.google.com/auth/audience
100
- > Audience → Test users → Add users
101
- > 6. Download the JSON file and tell me the file path
102
- >
103
- > Important Hermes CLI note: if the file path starts with `/`, do NOT send only the bare path as its own message in the CLI, because it can be mistaken for a slash command. Send it in a sentence instead, like:
104
- > `The JSON file path is: /home/user/Downloads/client_secret_....json`
105
-
106
- Once they provide the path:
107
-
108
- ```bash
109
- $GSETUP --client-secret /path/to/client_secret.json
110
- ```
111
-
112
- If they paste the raw client ID / client secret values instead of a file path,
113
- write a valid Desktop OAuth JSON file for them yourself, save it somewhere
114
- explicit (for example `~/Downloads/hermes-google-client-secret.json`), then run
115
- `--client-secret` against that file.
116
-
117
- ### Step 3: Get authorization URL
118
-
119
- Use the service set chosen in Step 1. Examples:
120
-
121
- ```bash
122
- $GSETUP --auth-url --services email,calendar --format json
123
- $GSETUP --auth-url --services calendar,drive,sheets,docs --format json
124
- $GSETUP --auth-url --services all --format json
125
- ```
126
-
127
- This returns JSON with an `auth_url` field and also saves the exact URL to
128
- `~/.hermes/google_oauth_last_url.txt`.
129
-
130
- Agent rules for this step:
131
- - Extract the `auth_url` field and send that exact URL to the user as a single line.
132
- - Tell the user that the browser will likely fail on `http://localhost:1` after approval, and that this is expected.
133
- - Tell them to copy the ENTIRE redirected URL from the browser address bar.
134
- - If the user gets `Error 403: access_denied`, send them directly to `https://console.cloud.google.com/auth/audience` to add themselves as a test user.
135
-
136
- ### Step 4: Exchange the code
137
-
138
- The user will paste back either a URL like `http://localhost:1/?code=4/0A...&scope=...`
139
- or just the code string. Either works. The `--auth-url` step stores a temporary
140
- pending OAuth session locally so `--auth-code` can complete the PKCE exchange
141
- later, even on headless systems:
142
-
143
- ```bash
144
- $GSETUP --auth-code "THE_URL_OR_CODE_THE_USER_PASTED" --format json
145
- ```
146
-
147
- If `--auth-code` fails because the code expired, was already used, or came from
148
- an older browser tab, it now returns a fresh `fresh_auth_url`. In that case,
149
- immediately send the new URL to the user and have them retry with the newest
150
- browser redirect only.
151
-
152
- ### Step 5: Verify
153
-
154
- ```bash
155
- $GSETUP --check
156
- ```
157
-
158
- Should print `AUTHENTICATED`. Setup is complete — token refreshes automatically from now on.
159
-
160
- ### Notes
161
-
162
- - Token is stored at `~/.hermes/google_token.json` and auto-refreshes.
163
- - Pending OAuth session state/verifier are stored temporarily at `~/.hermes/google_oauth_pending.json` until exchange completes.
164
- - If `gws` is installed, `google_api.py` points it at the same `~/.hermes/google_token.json` credentials file. Users do not need to run a separate `gws auth login` flow.
165
- - To revoke: `$GSETUP --revoke`
166
-
167
- ## Usage
168
-
169
- All commands go through the API script. Set `GAPI` as a shorthand:
170
-
171
- ```bash
172
- GAPI="python ${HERMES_HOME:-$HOME/.hermes}/skills/productivity/google-workspace/scripts/google_api.py"
173
- ```
174
-
175
- ### Gmail
176
-
177
- ```bash
178
- # Search (returns JSON array with id, from, subject, date, snippet)
179
- $GAPI gmail search "is:unread" --max 10
180
- $GAPI gmail search "from:boss@company.com newer_than:1d"
181
- $GAPI gmail search "has:attachment filename:pdf newer_than:7d"
182
-
183
- # Read full message (returns JSON with body text)
184
- $GAPI gmail get MESSAGE_ID
185
-
186
- # Send
187
- $GAPI gmail send --to user@example.com --subject "Hello" --body "Message text"
188
- $GAPI gmail send --to user@example.com --subject "Report" --body "<h1>Q4</h1><p>Details...</p>" --html
189
- $GAPI gmail send --to user@example.com --subject "Hello" --from '"Research Agent" <user@example.com>' --body "Message text"
190
-
191
- # Reply (automatically threads and sets In-Reply-To)
192
- $GAPI gmail reply MESSAGE_ID --body "Thanks, that works for me."
193
- $GAPI gmail reply MESSAGE_ID --from '"Support Bot" <user@example.com>' --body "Thanks"
194
-
195
- # Labels
196
- $GAPI gmail labels
197
- $GAPI gmail modify MESSAGE_ID --add-labels LABEL_ID
198
- $GAPI gmail modify MESSAGE_ID --remove-labels UNREAD
199
- ```
200
-
201
- ### Calendar
202
-
203
- ```bash
204
- # List events (defaults to next 7 days)
205
- $GAPI calendar list
206
- $GAPI calendar list --start 2026-03-01T00:00:00Z --end 2026-03-07T23:59:59Z
207
-
208
- # Create event (ISO 8601 with timezone required)
209
- $GAPI calendar create --summary "Team Standup" --start 2026-03-01T10:00:00-06:00 --end 2026-03-01T10:30:00-06:00
210
- $GAPI calendar create --summary "Lunch" --start 2026-03-01T12:00:00Z --end 2026-03-01T13:00:00Z --location "Cafe"
211
- $GAPI calendar create --summary "Review" --start 2026-03-01T14:00:00Z --end 2026-03-01T15:00:00Z --attendees "alice@co.com,bob@co.com"
212
-
213
- # Delete event
214
- $GAPI calendar delete EVENT_ID
215
- ```
216
-
217
- ### Drive
218
-
219
- ```bash
220
- # Search existing files
221
- $GAPI drive search "quarterly report" --max 10
222
- $GAPI drive search "mimeType='application/pdf'" --raw-query --max 5
223
-
224
- # Get metadata for a single file
225
- $GAPI drive get FILE_ID
226
-
227
- # Upload a local file (auto-detects MIME type)
228
- $GAPI drive upload /path/to/report.pdf
229
- $GAPI drive upload /path/to/image.png --name "Logo.png" --parent FOLDER_ID
230
-
231
- # Download (binary files download as-is; Google-native files export to a
232
- # sensible default — Docs→pdf, Sheets→csv, Slides→pdf, Drawings→png)
233
- $GAPI drive download FILE_ID
234
- $GAPI drive download DOC_ID --output ~/doc.pdf
235
- $GAPI drive download DOC_ID --export-mime text/plain --output ~/doc.txt
236
-
237
- # Create a folder
238
- $GAPI drive create-folder "Reports"
239
- $GAPI drive create-folder "Q4" --parent FOLDER_ID
240
-
241
- # Share
242
- $GAPI drive share FILE_ID --email alice@example.com --role reader
243
- $GAPI drive share FILE_ID --email alice@example.com --role writer --notify
244
- $GAPI drive share FILE_ID --type anyone --role reader # anyone with link
245
- $GAPI drive share FILE_ID --type domain --domain example.com --role reader
246
-
247
- # Delete — defaults to trash (reversible). Use --permanent to skip the trash.
248
- $GAPI drive delete FILE_ID
249
- $GAPI drive delete FILE_ID --permanent
250
- ```
251
-
252
- ### Contacts
253
-
254
- ```bash
255
- $GAPI contacts list --max 20
256
- ```
257
-
258
- ### Sheets
259
-
260
- ```bash
261
- # Create a new spreadsheet
262
- $GAPI sheets create --title "Q4 Budget"
263
- $GAPI sheets create --title "Inventory" --sheet-name "Stock"
264
-
265
- # Read
266
- $GAPI sheets get SHEET_ID "Sheet1!A1:D10"
267
-
268
- # Write
269
- $GAPI sheets update SHEET_ID "Sheet1!A1:B2" --values '[["Name","Score"],["Alice","95"]]'
270
-
271
- # Append rows
272
- $GAPI sheets append SHEET_ID "Sheet1!A:C" --values '[["new","row","data"]]'
273
- ```
274
-
275
- ### Docs
276
-
277
- ```bash
278
- # Read
279
- $GAPI docs get DOC_ID
280
-
281
- # Create a new Doc (optionally seeded with body text)
282
- $GAPI docs create --title "Meeting Notes"
283
- $GAPI docs create --title "Draft" --body "First paragraph..."
284
-
285
- # Append text to the end of an existing Doc
286
- $GAPI docs append DOC_ID --text "Additional content to append"
287
- ```
288
-
289
- ## Output Format
290
-
291
- All commands return JSON. Parse with `jq` or read directly. Key fields:
292
-
293
- - **Gmail search**: `[{id, threadId, from, to, subject, date, snippet, labels}]`
294
- - **Gmail get**: `{id, threadId, from, to, subject, date, labels, body}`
295
- - **Gmail send/reply**: `{status: "sent", id, threadId}`
296
- - **Calendar list**: `[{id, summary, start, end, location, description, htmlLink}]`
297
- - **Calendar create**: `{status: "created", id, summary, htmlLink}`
298
- - **Drive search**: `[{id, name, mimeType, modifiedTime, webViewLink}]`
299
- - **Drive get**: `{id, name, mimeType, modifiedTime, size, webViewLink, parents, owners}`
300
- - **Drive upload**: `{status: "uploaded", id, name, mimeType, webViewLink}`
301
- - **Drive download**: `{status: "downloaded", id, name, path, mimeType}`
302
- - **Drive create-folder**: `{status: "created", id, name, webViewLink}`
303
- - **Drive share**: `{status: "shared", permissionId, fileId, role, type}`
304
- - **Drive delete**: `{status: "trashed" | "deleted", fileId, permanent}`
305
- - **Contacts list**: `[{name, emails: [...], phones: [...]}]`
306
- - **Sheets get**: `[[cell, cell, ...], ...]`
307
- - **Sheets create**: `{status: "created", spreadsheetId, title, spreadsheetUrl}`
308
- - **Docs create**: `{status: "created", documentId, title, url}`
309
- - **Docs append**: `{status: "appended", documentId, inserted_at, characters}`
310
-
311
- ## Rules
312
-
313
- 1. **Never send email, create/delete calendar events, delete Drive files, share files, or modify Docs/Sheets without confirming with the user first.** Show what will be done (recipients, file IDs, content, share role) and ask for approval. For `drive delete`, prefer the default trash (reversible) over `--permanent`.
314
- 2. **Check auth before first use** — run `setup.py --check`. If it fails, guide the user through setup.
315
- 3. **Use the Gmail search syntax reference** for complex queries — load it with `skill_view("google-workspace", file_path="references/gmail-search-syntax.md")`.
316
- 4. **Calendar times must include timezone** — always use ISO 8601 with offset (e.g., `2026-03-01T10:00:00-06:00`) or UTC (`Z`).
317
- 5. **Respect rate limits** — avoid rapid-fire sequential API calls. Batch reads when possible.
318
-
319
- ## Troubleshooting
320
-
321
- | Problem | Fix |
322
- |---------|-----|
323
- | `NOT_AUTHENTICATED` | Run setup Steps 2-5 above |
324
- | `REFRESH_FAILED` | Token revoked or expired — redo Steps 3-5 |
325
- | `HttpError 403: Insufficient Permission` | Missing API scope — `$GSETUP --revoke` then redo Steps 3-5 |
326
- | `AUTHENTICATED (partial)` or "Token missing scopes" | New write capabilities (Drive write/delete, Docs create/edit) require re-authorization. `$GSETUP --revoke` then redo Steps 3-5 to grant the upgraded scopes. |
327
- | `HttpError 403: Access Not Configured` | API not enabled — user needs to enable it in Google Cloud Console |
328
- | `ModuleNotFoundError` | Run `$GSETUP --install-deps` |
329
- | Advanced Protection blocks auth | Workspace admin must allowlist the OAuth client ID |
330
-
331
- ## Revoking Access
332
-
333
- ```bash
334
- $GSETUP --revoke
335
- ```
@@ -1,63 +0,0 @@
1
- # Gmail Search Syntax
2
-
3
- Standard Gmail search operators work in the `query` argument.
4
-
5
- ## Common Operators
6
-
7
- | Operator | Example | Description |
8
- |----------|---------|-------------|
9
- | `is:unread` | `is:unread` | Unread messages |
10
- | `is:starred` | `is:starred` | Starred messages |
11
- | `is:important` | `is:important` | Important messages |
12
- | `in:inbox` | `in:inbox` | Inbox only |
13
- | `in:sent` | `in:sent` | Sent folder |
14
- | `in:drafts` | `in:drafts` | Drafts |
15
- | `in:trash` | `in:trash` | Trash |
16
- | `in:anywhere` | `in:anywhere` | All mail including spam/trash |
17
- | `from:` | `from:alice@example.com` | Sender |
18
- | `to:` | `to:bob@example.com` | Recipient |
19
- | `cc:` | `cc:team@example.com` | CC recipient |
20
- | `subject:` | `subject:invoice` | Subject contains |
21
- | `label:` | `label:work` | Has label |
22
- | `has:attachment` | `has:attachment` | Has attachments |
23
- | `filename:` | `filename:pdf` | Attachment filename/type |
24
- | `larger:` | `larger:5M` | Larger than size |
25
- | `smaller:` | `smaller:1M` | Smaller than size |
26
-
27
- ## Date Operators
28
-
29
- | Operator | Example | Description |
30
- |----------|---------|-------------|
31
- | `newer_than:` | `newer_than:7d` | Within last N days (d), months (m), years (y) |
32
- | `older_than:` | `older_than:30d` | Older than N days/months/years |
33
- | `after:` | `after:2026/02/01` | After date (YYYY/MM/DD) |
34
- | `before:` | `before:2026/03/01` | Before date |
35
-
36
- ## Combining
37
-
38
- | Syntax | Example | Description |
39
- |--------|---------|-------------|
40
- | space | `from:alice subject:meeting` | AND (implicit) |
41
- | `OR` | `from:alice OR from:bob` | OR |
42
- | `-` | `-from:noreply@` | NOT (exclude) |
43
- | `()` | `(from:alice OR from:bob) subject:meeting` | Grouping |
44
- | `""` | `"exact phrase"` | Exact phrase match |
45
-
46
- ## Common Patterns
47
-
48
- ```
49
- # Unread emails from the last day
50
- is:unread newer_than:1d
51
-
52
- # Emails with PDF attachments from a specific sender
53
- from:accounting@company.com has:attachment filename:pdf
54
-
55
- # Important unread emails (not promotions/social)
56
- is:unread -category:promotions -category:social
57
-
58
- # Emails in a thread about a topic
59
- subject:"Q4 budget" newer_than:30d
60
-
61
- # Large attachments to clean up
62
- has:attachment larger:10M older_than:90d
63
- ```