edusquads-cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/.claude/skills/edusquads/SKILL.md +212 -0
  2. package/CLAUDE.md +40 -0
  3. package/README.md +92 -0
  4. package/_edusquads/evidencias/EVIDENCIA-MODELO.md +33 -0
  5. package/_edusquads/memoria/USUARIO-ATIVO.md +42 -0
  6. package/_edusquads/runs/RUN-MODELO.md +50 -0
  7. package/_edusquads/runs/RUNS-INDEX.md +25 -0
  8. package/base/catalogo-dos-160-agentes.md +175 -0
  9. package/base/comandos/edusquads-comandos.md +46 -0
  10. package/base/matriz-mestre-dos-16-squads.md +1147 -0
  11. package/base/matriz-mestre-dos-especialistas.md +579 -0
  12. package/base/modelos/modelo-de-agente.md +62 -0
  13. package/base/modelos/modelo-de-skill.md +55 -0
  14. package/base/paridade-opensquad.md +49 -0
  15. package/base/playbooks/investigacao/COMO-EXECUTAR.md +51 -0
  16. package/base/playbooks/investigacao/ESTRUTURACAO.md +28 -0
  17. package/base/playbooks/investigacao/PLAYBOOK-GERAL.md +34 -0
  18. package/base/playbooks/investigacao/instagram.md +23 -0
  19. package/base/playbooks/investigacao/linkedin.md +23 -0
  20. package/base/playbooks/investigacao/x-twitter.md +23 -0
  21. package/base/playbooks/investigacao/youtube.md +23 -0
  22. package/base/protocolo-memoria-usuario.md +50 -0
  23. package/base/protocolo-playwright-edusquads.md +48 -0
  24. package/base/scripts/edusquads_concluir_investigacao.py +356 -0
  25. package/base/scripts/edusquads_estruturar_coleta.py +237 -0
  26. package/base/scripts/edusquads_investigar.py +279 -0
  27. package/base/visao-geral.md +46 -0
  28. package/bin/edusquads.js +146 -0
  29. package/carrosseis.md +988 -0
  30. package/especialistas/branding/marty-neumeier.md +39 -0
  31. package/especialistas/copy/joanna-wiebe.md +41 -0
  32. package/especialistas/copy/russell-brunson.md +41 -0
  33. package/especialistas/mensagem/donald-miller.md +41 -0
  34. package/especialistas/posicionamento/april-dunford.md +39 -0
  35. package/especialistas/trafego-pago/pedro-sobral.md +41 -0
  36. package/package.json +31 -0
  37. package/pesquisa/web/april-dunford.md +37 -0
  38. package/pesquisa/web/claude-code-comandos.md +30 -0
  39. package/pesquisa/web/donald-miller.md +29 -0
  40. package/pesquisa/web/joanna-wiebe.md +29 -0
  41. package/pesquisa/web/marty-neumeier.md +37 -0
  42. package/pesquisa/web/opensquad.md +23 -0
  43. package/pesquisa/web/pedro-sobral.md +29 -0
  44. package/pesquisa/web/pendentes/biblioteca-pendente.md +20 -0
  45. package/pesquisa/web/russell-brunson.md +30 -0
  46. package/squads/01-estrategia/agentes/arquiteto-de-diferencial.md +62 -0
  47. package/squads/01-estrategia/agentes/auditor-de-coerencia-estrategica.md +62 -0
  48. package/squads/01-estrategia/agentes/especialista-em-posicionamento.md +61 -0
  49. package/squads/01-estrategia/agentes/estrategista-de-categoria.md +60 -0
  50. package/squads/01-estrategia/agentes/estrategista-de-mercado.md +61 -0
  51. package/squads/01-estrategia/agentes/planejador-de-tese.md +60 -0
  52. package/squads/01-estrategia/agentes/priorizador-estrategico.md +61 -0
  53. package/squads/01-estrategia/agentes/revisor-estrategico.md +65 -0
  54. package/squads/01-estrategia/agentes/sintetizador-estrategico.md +62 -0
  55. package/squads/01-estrategia/agentes/tradutor-estrategico-para-squads.md +62 -0
  56. package/squads/01-estrategia/squad.md +70 -0
  57. package/squads/02-pesquisa/agentes/analista-de-concorrencia.md +62 -0
  58. package/squads/02-pesquisa/agentes/analista-de-tendencias.md +60 -0
  59. package/squads/02-pesquisa/agentes/auditor-de-suficiencia-de-pesquisa.md +61 -0
  60. package/squads/02-pesquisa/agentes/bibliotecario-de-evidencias.md +62 -0
  61. package/squads/02-pesquisa/agentes/curador-de-fontes.md +61 -0
  62. package/squads/02-pesquisa/agentes/minerador-de-reviews.md +60 -0
  63. package/squads/02-pesquisa/agentes/organizador-de-insights.md +61 -0
  64. package/squads/02-pesquisa/agentes/pesquisador-de-mercado.md +61 -0
  65. package/squads/02-pesquisa/agentes/pesquisador-de-voz-do-cliente.md +63 -0
  66. package/squads/02-pesquisa/agentes/revisor-de-pesquisa.md +61 -0
  67. package/squads/02-pesquisa/squad.md +68 -0
  68. package/squads/03-copy/agentes/copywriter-de-anuncios.md +65 -0
  69. package/squads/03-copy/agentes/copywriter-de-email.md +65 -0
  70. package/squads/03-copy/agentes/copywriter-de-landing-page.md +66 -0
  71. package/squads/03-copy/agentes/critico-de-conversao.md +65 -0
  72. package/squads/03-copy/agentes/editor-de-copy-de-conversao.md +63 -0
  73. package/squads/03-copy/agentes/especialista-em-cta.md +65 -0
  74. package/squads/03-copy/agentes/especialista-em-headlines.md +63 -0
  75. package/squads/03-copy/agentes/pesquisador-de-mensagem.md +63 -0
  76. package/squads/03-copy/agentes/revisor-chefe-de-copy.md +65 -0
  77. package/squads/03-copy/agentes/roteirista-de-funil.md +63 -0
  78. package/squads/03-copy/skills/estruturar-hook-story-offer.md +61 -0
  79. package/squads/03-copy/squad.md +73 -0
  80. package/squads/04-conteudo/agentes/curador-de-temas.md +60 -0
  81. package/squads/04-conteudo/agentes/especialista-em-reaproveitamento.md +60 -0
  82. package/squads/04-conteudo/agentes/estrategista-de-conteudo.md +61 -0
  83. package/squads/04-conteudo/agentes/organizador-de-calendario.md +61 -0
  84. package/squads/04-conteudo/agentes/otimizador-editorial.md +62 -0
  85. package/squads/04-conteudo/agentes/planejador-editorial.md +61 -0
  86. package/squads/04-conteudo/agentes/redator-de-conteudo-seo.md +61 -0
  87. package/squads/04-conteudo/agentes/redator-social.md +61 -0
  88. package/squads/04-conteudo/agentes/revisor-de-conteudo.md +63 -0
  89. package/squads/04-conteudo/agentes/roteirista-de-conteudo.md +61 -0
  90. package/squads/04-conteudo/squad.md +70 -0
  91. package/squads/05-design/agentes/auditor-de-coerencia-visual.md +60 -0
  92. package/squads/05-design/agentes/designer-de-apresentacoes.md +62 -0
  93. package/squads/05-design/agentes/designer-de-criativos.md +90 -0
  94. package/squads/05-design/agentes/designer-de-landing-page.md +62 -0
  95. package/squads/05-design/agentes/designer-visual.md +72 -0
  96. package/squads/05-design/agentes/diretor-de-arte.md +71 -0
  97. package/squads/05-design/agentes/especialista-em-sistemas-visuais.md +60 -0
  98. package/squads/05-design/agentes/revisor-de-design.md +75 -0
  99. package/squads/05-design/agentes/revisor-de-hierarquia-visual.md +60 -0
  100. package/squads/05-design/agentes/tradutor-de-marca-para-design.md +62 -0
  101. package/squads/05-design/squad.md +67 -0
  102. package/squads/06-branding/agentes/arquiteto-de-diferenciacao.md +62 -0
  103. package/squads/06-branding/agentes/auditor-de-coerencia-de-marca.md +62 -0
  104. package/squads/06-branding/agentes/designer-de-narrativa-de-marca.md +62 -0
  105. package/squads/06-branding/agentes/estrategista-de-marca.md +62 -0
  106. package/squads/06-branding/agentes/guardiao-de-consistencia.md +62 -0
  107. package/squads/06-branding/agentes/guardiao-de-tom.md +62 -0
  108. package/squads/06-branding/agentes/planejador-de-identidade.md +60 -0
  109. package/squads/06-branding/agentes/revisor-de-distincao.md +60 -0
  110. package/squads/06-branding/agentes/revisor-de-marca.md +64 -0
  111. package/squads/06-branding/agentes/unificador-de-linguagem.md +60 -0
  112. package/squads/06-branding/squad.md +67 -0
  113. package/squads/07-ux-experiencia/agentes/analista-de-friccao.md +62 -0
  114. package/squads/07-ux-experiencia/agentes/arquiteto-de-informacao.md +60 -0
  115. package/squads/07-ux-experiencia/agentes/critico-de-jornada.md +62 -0
  116. package/squads/07-ux-experiencia/agentes/especialista-em-microcopy.md +63 -0
  117. package/squads/07-ux-experiencia/agentes/otimizador-de-formularios.md +62 -0
  118. package/squads/07-ux-experiencia/agentes/planejador-de-onboarding.md +62 -0
  119. package/squads/07-ux-experiencia/agentes/revisor-de-clareza-de-interface.md +60 -0
  120. package/squads/07-ux-experiencia/agentes/revisor-de-fluxo.md +60 -0
  121. package/squads/07-ux-experiencia/agentes/revisor-de-ux.md +62 -0
  122. package/squads/07-ux-experiencia/agentes/ux-writer.md +62 -0
  123. package/squads/07-ux-experiencia/squad.md +68 -0
  124. package/squads/08-growth/agentes/analista-de-alavancas.md +63 -0
  125. package/squads/08-growth/agentes/analista-de-gargalos.md +63 -0
  126. package/squads/08-growth/agentes/especialista-em-conversao.md +65 -0
  127. package/squads/08-growth/agentes/estrategista-de-growth.md +65 -0
  128. package/squads/08-growth/agentes/integrador-de-funil.md +64 -0
  129. package/squads/08-growth/agentes/leitor-de-performance-de-crescimento.md +63 -0
  130. package/squads/08-growth/agentes/planejador-de-testes.md +63 -0
  131. package/squads/08-growth/agentes/priorizador-de-experimentos.md +63 -0
  132. package/squads/08-growth/agentes/revisor-de-growth.md +64 -0
  133. package/squads/08-growth/agentes/revisor-de-hipoteses.md +64 -0
  134. package/squads/08-growth/squad.md +69 -0
  135. package/squads/09-seo/agentes/analista-de-intencao-de-busca.md +60 -0
  136. package/squads/09-seo/agentes/auditor-de-seo.md +60 -0
  137. package/squads/09-seo/agentes/criador-de-brief-seo.md +61 -0
  138. package/squads/09-seo/agentes/estrategista-de-seo.md +61 -0
  139. package/squads/09-seo/agentes/organizador-de-arquitetura-tematica.md +61 -0
  140. package/squads/09-seo/agentes/pesquisador-de-palavras-chave.md +60 -0
  141. package/squads/09-seo/agentes/planejador-de-clusters.md +61 -0
  142. package/squads/09-seo/agentes/planejador-de-links-internos.md +60 -0
  143. package/squads/09-seo/agentes/revisor-de-seo.md +61 -0
  144. package/squads/09-seo/agentes/revisor-de-serp-fit.md +60 -0
  145. package/squads/09-seo/squad.md +67 -0
  146. package/squads/10-comercial/agentes/arquiteto-de-narrativa-comercial.md +65 -0
  147. package/squads/10-comercial/agentes/copywriter-de-follow-up-comercial.md +63 -0
  148. package/squads/10-comercial/agentes/criador-de-soundbites-comerciais.md +62 -0
  149. package/squads/10-comercial/agentes/estrategista-comercial.md +65 -0
  150. package/squads/10-comercial/agentes/estruturador-de-proposta.md +63 -0
  151. package/squads/10-comercial/agentes/organizador-de-materiais-comerciais.md +62 -0
  152. package/squads/10-comercial/agentes/redator-de-pitch.md +63 -0
  153. package/squads/10-comercial/agentes/revisor-comercial.md +65 -0
  154. package/squads/10-comercial/agentes/revisor-de-objecoes.md +63 -0
  155. package/squads/10-comercial/agentes/tradutor-de-posicionamento-para-vendas.md +62 -0
  156. package/squads/10-comercial/squad.md +70 -0
  157. package/squads/11-oferta-monetizacao/agentes/analista-de-logica-de-monetizacao.md +60 -0
  158. package/squads/11-oferta-monetizacao/agentes/arquiteto-de-oferta.md +62 -0
  159. package/squads/11-oferta-monetizacao/agentes/designer-de-bonus.md +60 -0
  160. package/squads/11-oferta-monetizacao/agentes/especialista-em-garantia.md +61 -0
  161. package/squads/11-oferta-monetizacao/agentes/estrategista-de-monetizacao.md +62 -0
  162. package/squads/11-oferta-monetizacao/agentes/estruturador-de-pacotes.md +61 -0
  163. package/squads/11-oferta-monetizacao/agentes/planejador-de-escada-de-valor.md +61 -0
  164. package/squads/11-oferta-monetizacao/agentes/planejador-de-progressao.md +60 -0
  165. package/squads/11-oferta-monetizacao/agentes/revisor-de-oferta.md +61 -0
  166. package/squads/11-oferta-monetizacao/agentes/revisor-de-stack-de-valor.md +60 -0
  167. package/squads/11-oferta-monetizacao/squad.md +69 -0
  168. package/squads/12-operacoes/agentes/arquiteto-de-operacoes.md +61 -0
  169. package/squads/12-operacoes/agentes/auditor-de-processo.md +60 -0
  170. package/squads/12-operacoes/agentes/criador-de-checklist.md +60 -0
  171. package/squads/12-operacoes/agentes/documentador-operacional.md +62 -0
  172. package/squads/12-operacoes/agentes/estruturador-de-passagens-entre-squads.md +61 -0
  173. package/squads/12-operacoes/agentes/mapeador-de-fluxos.md +60 -0
  174. package/squads/12-operacoes/agentes/organizador-de-playbooks.md +60 -0
  175. package/squads/12-operacoes/agentes/redator-de-sop.md +61 -0
  176. package/squads/12-operacoes/agentes/revisor-operacional.md +64 -0
  177. package/squads/12-operacoes/agentes/verificador-de-governanca.md +61 -0
  178. package/squads/12-operacoes/squad.md +64 -0
  179. package/squads/13-qualidade/agentes/auditor-de-consistencia.md +62 -0
  180. package/squads/13-qualidade/agentes/auditor-de-friccao.md +62 -0
  181. package/squads/13-qualidade/agentes/critico-de-conversao.md +65 -0
  182. package/squads/13-qualidade/agentes/guardiao-de-aprovacao-final.md +62 -0
  183. package/squads/13-qualidade/agentes/identificador-de-risco-de-entrega.md +62 -0
  184. package/squads/13-qualidade/agentes/lider-de-qualidade.md +62 -0
  185. package/squads/13-qualidade/agentes/revisor-de-clareza.md +61 -0
  186. package/squads/13-qualidade/agentes/revisor-de-coerencia-de-mensagem.md +62 -0
  187. package/squads/13-qualidade/agentes/revisor-de-prontidao.md +62 -0
  188. package/squads/13-qualidade/agentes/verificador-de-logica.md +60 -0
  189. package/squads/13-qualidade/squad.md +63 -0
  190. package/squads/14-automacao-sistemas/agentes/arquiteto-de-sistema.md +61 -0
  191. package/squads/14-automacao-sistemas/agentes/auditor-de-coerencia-sistemica.md +62 -0
  192. package/squads/14-automacao-sistemas/agentes/curador-de-matrizes.md +60 -0
  193. package/squads/14-automacao-sistemas/agentes/designer-de-orquestracao.md +61 -0
  194. package/squads/14-automacao-sistemas/agentes/estruturador-de-skills.md +61 -0
  195. package/squads/14-automacao-sistemas/agentes/gestor-de-estado.md +61 -0
  196. package/squads/14-automacao-sistemas/agentes/guardiao-da-estrutura-do-framework.md +62 -0
  197. package/squads/14-automacao-sistemas/agentes/integrador-de-fluxos.md +61 -0
  198. package/squads/14-automacao-sistemas/agentes/planejador-de-automacao.md +61 -0
  199. package/squads/14-automacao-sistemas/agentes/revisor-de-sistema.md +62 -0
  200. package/squads/14-automacao-sistemas/squad.md +66 -0
  201. package/squads/15-executivo-pmo/agentes/coordenador-de-pmo.md +61 -0
  202. package/squads/15-executivo-pmo/agentes/definidor-de-escopo.md +62 -0
  203. package/squads/15-executivo-pmo/agentes/estrategista-executivo.md +62 -0
  204. package/squads/15-executivo-pmo/agentes/guardiao-de-escopo.md +61 -0
  205. package/squads/15-executivo-pmo/agentes/organizador-de-ativacao-de-squads.md +61 -0
  206. package/squads/15-executivo-pmo/agentes/planejador-de-prioridades.md +61 -0
  207. package/squads/15-executivo-pmo/agentes/registrador-de-decisoes.md +61 -0
  208. package/squads/15-executivo-pmo/agentes/revisor-de-dependencias.md +60 -0
  209. package/squads/15-executivo-pmo/agentes/revisor-executivo.md +63 -0
  210. package/squads/15-executivo-pmo/agentes/sequenciador-de-execucao.md +60 -0
  211. package/squads/15-executivo-pmo/squad.md +66 -0
  212. package/squads/16-trafego-pago/agentes/analista-de-metricas-e-otimizacao.md +62 -0
  213. package/squads/16-trafego-pago/agentes/analista-de-publicos.md +61 -0
  214. package/squads/16-trafego-pago/agentes/auditor-de-contas-e-campanhas.md +60 -0
  215. package/squads/16-trafego-pago/agentes/escalador-de-campanhas.md +61 -0
  216. package/squads/16-trafego-pago/agentes/especialista-em-criativos-de-performance.md +61 -0
  217. package/squads/16-trafego-pago/agentes/especialista-em-estrutura-de-funil-pago.md +63 -0
  218. package/squads/16-trafego-pago/agentes/estrategista-de-trafego-pago.md +67 -0
  219. package/squads/16-trafego-pago/agentes/gestor-de-remarketing.md +63 -0
  220. package/squads/16-trafego-pago/agentes/planejador-de-campanhas.md +61 -0
  221. package/squads/16-trafego-pago/agentes/revisor-de-performance.md +62 -0
  222. package/squads/16-trafego-pago/skills/calcular-faixa-de-investimento.md +61 -0
  223. package/squads/16-trafego-pago/squad.md +73 -0
@@ -0,0 +1,279 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Automação Fase 3 do /edusquads investigar.
4
+
5
+ Escopo desta versão:
6
+ - Gera run_id incremental por data
7
+ - Seleciona playbook por plataforma
8
+ - Cria arquivo de evidência automaticamente
9
+ - Atualiza RUNS-INDEX.md
10
+ - Cria/atualiza arquivo de run com trilha da investigação
11
+
12
+ Observação:
13
+ A navegação web efetiva continua sendo executada pelo runtime do agente
14
+ (browser tools/Playwright da stack). Este script automatiza a camada
15
+ operacional de artefatos e rastreabilidade.
16
+ """
17
+
18
+ from __future__ import annotations
19
+
20
+ import argparse
21
+ import datetime as dt
22
+ import re
23
+ from pathlib import Path
24
+
25
+ ROOT = Path(__file__).resolve().parents[2]
26
+ RUNS_DIR = ROOT / "_edusquads" / "runs"
27
+ EVID_DIR = ROOT / "_edusquads" / "evidencias"
28
+ PLAYBOOK_DIR = ROOT / "base" / "playbooks" / "investigacao"
29
+ RUNS_INDEX = RUNS_DIR / "RUNS-INDEX.md"
30
+
31
+
32
+ def rel(path: Path) -> str:
33
+ return path.relative_to(ROOT).as_posix()
34
+
35
+
36
+ def detect_platform(target: str, platform_arg: str | None) -> str:
37
+ if platform_arg:
38
+ p = platform_arg.lower().strip()
39
+ aliases = {
40
+ "instagram": "instagram",
41
+ "insta": "instagram",
42
+ "youtube": "youtube",
43
+ "yt": "youtube",
44
+ "linkedin": "linkedin",
45
+ "x": "x-twitter",
46
+ "twitter": "x-twitter",
47
+ "x-twitter": "x-twitter",
48
+ }
49
+ if p in aliases:
50
+ return aliases[p]
51
+
52
+ t = target.lower()
53
+ if "instagram.com" in t:
54
+ return "instagram"
55
+ if "youtube.com" in t or "youtu.be" in t:
56
+ return "youtube"
57
+ if "linkedin.com" in t:
58
+ return "linkedin"
59
+ if "x.com" in t or "twitter.com" in t:
60
+ return "x-twitter"
61
+ return "instagram"
62
+
63
+
64
+ def next_run_id(today: dt.date) -> str:
65
+ prefix = f"RUN-{today.isoformat()}-"
66
+ max_n = 0
67
+ for p in RUNS_DIR.glob(f"{prefix}*.md"):
68
+ m = re.match(rf"{re.escape(prefix)}(\d{{3}})\.md$", p.name)
69
+ if m:
70
+ max_n = max(max_n, int(m.group(1)))
71
+ return f"{prefix}{max_n + 1:03d}"
72
+
73
+
74
+ def ensure_dirs() -> None:
75
+ RUNS_DIR.mkdir(parents=True, exist_ok=True)
76
+ EVID_DIR.mkdir(parents=True, exist_ok=True)
77
+
78
+
79
+ def append_runs_index(run_id: str, command: str, objective: str, squads: str, status: str, run_file: str) -> None:
80
+ if not RUNS_INDEX.exists():
81
+ RUNS_INDEX.write_text(
82
+ "# Runs do EduSquads\n\n"
83
+ "Registro cronológico das execuções do sistema `/edusquads`.\n\n"
84
+ "## Tabela de controle\n"
85
+ "| run_id | data | comando | objetivo | squads acionados | status | arquivo |\n"
86
+ "|---|---|---|---|---|---|---|\n",
87
+ encoding="utf-8",
88
+ )
89
+
90
+ content = RUNS_INDEX.read_text(encoding="utf-8")
91
+ date_txt = dt.date.today().isoformat()
92
+ row = f"| {run_id} | {date_txt} | `{command}` | {objective} | {squads} | {status} | `{run_file}` |\n"
93
+
94
+ if row in content:
95
+ return
96
+
97
+ lines = content.splitlines(keepends=True)
98
+ insert_at = len(lines)
99
+ for i, line in enumerate(lines):
100
+ if line.startswith("## Regras de registro"):
101
+ insert_at = i
102
+ break
103
+
104
+ # remove linha em branco imediatamente antes de "## Regras de registro"
105
+ if insert_at > 0 and lines[insert_at - 1].strip() == "":
106
+ del lines[insert_at - 1]
107
+ insert_at -= 1
108
+
109
+ lines.insert(insert_at, row)
110
+ RUNS_INDEX.write_text("".join(lines), encoding="utf-8")
111
+
112
+
113
+ def create_evidence(run_id: str, platform: str, target: str, objective: str, depth: str, consent: bool) -> Path:
114
+ ev_path = EVID_DIR / f"EVIDENCIA-{run_id}-{platform}.md"
115
+ now = dt.datetime.now().strftime("%Y-%m-%d %H:%M")
116
+
117
+ content = f"""# EVIDENCIA-{run_id}-{platform}
118
+
119
+ ## Metadados
120
+ - id_evidencia: EVIDENCIA-{run_id}-{platform}
121
+ - data: {now}
122
+ - run_id: {run_id}
123
+ - comando: /edusquads investigar
124
+
125
+ ## Objetivo da investigação
126
+ - {objective}
127
+
128
+ ## Entrada usada
129
+ - url/perfil/query: {target}
130
+ - plataforma detectada: {platform}
131
+ - profundidade: {depth}
132
+
133
+ ## Playbook aplicado
134
+ - `base/playbooks/investigacao/{platform}.md`
135
+
136
+ ## Links visitados
137
+ - {target}
138
+
139
+ ## Síntese interpretativa
140
+ - (preencher após investigação de navegação)
141
+
142
+ ## Extrações úteis para squads
143
+ - Squad de Estratégia:
144
+ - Squad de Conteúdo:
145
+ - Squad de Copy:
146
+ - Squad de Design:
147
+
148
+ ## Limites da evidência
149
+ - Execução inicial automatizada de artefatos; síntese depende da investigação web concluída.
150
+
151
+ ## Segurança
152
+ - sessão persistida: {'sim' if consent else 'não'}
153
+ - consentimento explícito registrado: {'sim' if consent else 'não'}
154
+ - dados sensíveis removidos: sim
155
+ """
156
+ ev_path.write_text(content, encoding="utf-8")
157
+ return ev_path
158
+
159
+
160
+ def create_run(run_id: str, target: str, objective: str, platform: str, evidence_path: Path) -> Path:
161
+ run_path = RUNS_DIR / f"{run_id}.md"
162
+ date_txt = dt.date.today().isoformat()
163
+ content = f"""# {run_id}
164
+
165
+ ## Metadados
166
+ - run_id: {run_id}
167
+ - data: {date_txt}
168
+ - comando: `/edusquads investigar`
169
+ - solicitacao_original: investigação automatizada para {target}
170
+ - status: em-andamento
171
+
172
+ ## Contexto aplicado
173
+ - memória do usuário lida: sim
174
+ - arquivos de referência usados:
175
+ - `base/protocolo-playwright-edusquads.md`
176
+ - `base/playbooks/investigacao/{platform}.md`
177
+
178
+ ## Plano executado
179
+ 1. Detectar plataforma e selecionar playbook.
180
+ 2. Criar artefato de evidência com metadados.
181
+ 3. Registrar run no índice de execuções.
182
+ 4. Executar investigação web e preencher síntese.
183
+
184
+ ## Squads e agentes acionados
185
+ - squads:
186
+ - 14-automacao-sistemas
187
+ - 13-qualidade
188
+ - agentes-chave:
189
+ - estruturador-de-skills
190
+ - lider-de-qualidade
191
+
192
+ ## Entregas geradas
193
+ - `{rel(evidence_path)}`
194
+
195
+ ## Checkpoints
196
+ ### Checkpoint de estratégia
197
+ - resultado: aprovado
198
+ - observações: objetivo definido e playbook selecionado.
199
+
200
+ ### Checkpoint de produção
201
+ - resultado: em-andamento
202
+ - observações: investigação web pendente de execução completa.
203
+
204
+ ### Checkpoint de qualidade
205
+ - resultado: pendente
206
+ - observações: validação final após preenchimento da síntese.
207
+
208
+ ## Decisões registradas
209
+ - plataforma detectada automaticamente: {platform}
210
+
211
+ ## Pendências / próximos passos
212
+ - executar navegação e preencher síntese interpretativa da evidência.
213
+ - atualizar status para concluído ao finalizar a investigação.
214
+
215
+ ## Evidências
216
+ - arquivos alterados:
217
+ - `{rel(evidence_path)}`
218
+ - validações realizadas:
219
+ - geração automática de run_id
220
+ - seleção automática de playbook
221
+ """
222
+ run_path.write_text(content, encoding="utf-8")
223
+ return run_path
224
+
225
+
226
+ def main() -> int:
227
+ parser = argparse.ArgumentParser(description="Fase 3: automação de investigação /edusquads")
228
+ parser.add_argument("target", help="URL/perfil alvo da investigação")
229
+ parser.add_argument("--objetivo", required=True, help="Objetivo de negócio da investigação")
230
+ parser.add_argument("--plataforma", help="instagram|youtube|linkedin|x-twitter")
231
+ parser.add_argument("--profundidade", default="rápida", choices=["rápida", "profunda"], help="Nível de profundidade")
232
+ parser.add_argument("--consentimento-sessao", action="store_true", help="Marcar que houve consentimento explícito para persistir sessão")
233
+ args = parser.parse_args()
234
+
235
+ ensure_dirs()
236
+ today = dt.date.today()
237
+
238
+ run_id = next_run_id(today)
239
+ platform = detect_platform(args.target, args.plataforma)
240
+
241
+ playbook = PLAYBOOK_DIR / f"{platform}.md"
242
+ if not playbook.exists():
243
+ raise SystemExit(f"Playbook não encontrado: {playbook}")
244
+
245
+ ev_path = create_evidence(
246
+ run_id=run_id,
247
+ platform=platform,
248
+ target=args.target,
249
+ objective=args.objetivo,
250
+ depth=args.profundidade,
251
+ consent=args.consentimento_sessao,
252
+ )
253
+
254
+ run_path = create_run(
255
+ run_id=run_id,
256
+ target=args.target,
257
+ objective=args.objetivo,
258
+ platform=platform,
259
+ evidence_path=ev_path,
260
+ )
261
+
262
+ append_runs_index(
263
+ run_id=run_id,
264
+ command="/edusquads investigar",
265
+ objective=args.objetivo,
266
+ squads="14-Automação/Sistema, 13-Qualidade",
267
+ status="em-andamento",
268
+ run_file=f"_edusquads/runs/{run_path.name}",
269
+ )
270
+
271
+ print(f"run_id={run_id}")
272
+ print(f"platform={platform}")
273
+ print(f"run_file={run_path.as_posix()}")
274
+ print(f"evidence_file={ev_path.as_posix()}")
275
+ return 0
276
+
277
+
278
+ if __name__ == "__main__":
279
+ raise SystemExit(main())
@@ -0,0 +1,46 @@
1
+ # Visão Geral
2
+
3
+ ## O que é o EduSquads
4
+ EduSquads é um sistema para Claude Code que transforma conhecimento de mercado em operação estruturada.
5
+
6
+ Ele combina:
7
+ - squads
8
+ - agentes
9
+ - skills
10
+ - fundamentos
11
+ - fluxos
12
+ - revisão
13
+ - comando de ativação
14
+
15
+ ## Tese principal
16
+ Agentes genéricos tendem a produzir entregas genéricas.
17
+ Agentes com fundamento, escopo e critério produzem entregas mais consistentes.
18
+
19
+ ## Princípios do sistema
20
+ 1. Um agente = uma função principal.
21
+ 2. Uma skill = um método reutilizável.
22
+ 3. Um squad = uma unidade operacional.
23
+ 4. Todo output importante passa por revisão.
24
+ 5. Todo fundamento deve ser rastreável a fontes públicas.
25
+ 6. Toda doutrina do agente deve ser interpretada, não copiada.
26
+
27
+ ## Estrutura macro
28
+ - Base
29
+ - Biblioteca de especialistas
30
+ - Squads
31
+ - Skills
32
+ - Fluxos
33
+ - Comando `/edusquads`
34
+
35
+ ## Objetivo do comando `/edusquads`
36
+ Ao ser invocado, Claude deve:
37
+ 1. entender a operação pedida
38
+ 2. mapear quais squads entram
39
+ 3. selecionar fundamentos adequados
40
+ 4. propor ou montar agentes/skills relevantes
41
+ 5. estruturar entregas com critérios de qualidade
42
+
43
+ ## Escala planejada
44
+ - 16 squads
45
+ - até 160 agentes, se mantido o padrão de 10 agentes por squad
46
+ - biblioteca crescente de especialistas por especialidade
@@ -0,0 +1,146 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require("fs");
4
+ const path = require("path");
5
+
6
+ const args = process.argv.slice(2);
7
+ const command = args.find((a) => !a.startsWith("-")) || "install";
8
+ const force = args.includes("--force");
9
+ const dryRun = args.includes("--dry-run");
10
+ const targetArgIndex = args.findIndex((a) => a === "--target");
11
+ const targetDir =
12
+ targetArgIndex >= 0 && args[targetArgIndex + 1]
13
+ ? path.resolve(args[targetArgIndex + 1])
14
+ : process.cwd();
15
+
16
+ const PACKAGE_ROOT = path.resolve(__dirname, "..");
17
+
18
+ const INSTALL_ITEMS = [
19
+ { src: ".claude/skills/edusquads", dest: ".claude/skills/edusquads" },
20
+ { src: "base", dest: "base" },
21
+ { src: "especialistas", dest: "especialistas" },
22
+ { src: "pesquisa", dest: "pesquisa" },
23
+ { src: "squads", dest: "squads" },
24
+ { src: "_edusquads/memoria/USUARIO-ATIVO.md", dest: "_edusquads/memoria/USUARIO-ATIVO.md" },
25
+ { src: "_edusquads/runs/RUN-MODELO.md", dest: "_edusquads/runs/RUN-MODELO.md" },
26
+ { src: "_edusquads/runs/RUNS-INDEX.md", dest: "_edusquads/runs/RUNS-INDEX.md" },
27
+ { src: "_edusquads/evidencias/EVIDENCIA-MODELO.md", dest: "_edusquads/evidencias/EVIDENCIA-MODELO.md" },
28
+ { src: "carrosseis.md", dest: "carrosseis.md" }
29
+ ];
30
+
31
+ function help() {
32
+ console.log(`\nEduSquads CLI\n\nUso:\n npx edusquads-cli install [--target <dir>] [--force] [--dry-run]\n npx edusquads-cli --help\n\nOpções:\n --target <dir> Diretório do projeto de destino (default: diretório atual)\n --force Sobrescreve arquivos existentes\n --dry-run Simula instalação sem gravar arquivos\n`);
33
+ }
34
+
35
+ function ensureDir(p) {
36
+ if (dryRun) return;
37
+ fs.mkdirSync(p, { recursive: true });
38
+ }
39
+
40
+ function copyFile(src, dest) {
41
+ const exists = fs.existsSync(dest);
42
+ if (exists && !force) return "skipped";
43
+ ensureDir(path.dirname(dest));
44
+ if (!dryRun) fs.copyFileSync(src, dest);
45
+ return exists ? "overwritten" : "created";
46
+ }
47
+
48
+ function copyDir(src, dest, report) {
49
+ const entries = fs.readdirSync(src, { withFileTypes: true });
50
+ ensureDir(dest);
51
+ for (const entry of entries) {
52
+ const srcPath = path.join(src, entry.name);
53
+ const destPath = path.join(dest, entry.name);
54
+ if (entry.isDirectory()) {
55
+ copyDir(srcPath, destPath, report);
56
+ } else {
57
+ const status = copyFile(srcPath, destPath);
58
+ report[status] = (report[status] || 0) + 1;
59
+ }
60
+ }
61
+ }
62
+
63
+ function patchGitignore(target) {
64
+ const gitignorePath = path.join(target, ".gitignore");
65
+ const required = [
66
+ "_edusquads/browser_profile/",
67
+ "_edusquads/evidencias/"
68
+ ];
69
+
70
+ let current = "";
71
+ if (fs.existsSync(gitignorePath)) {
72
+ current = fs.readFileSync(gitignorePath, "utf-8");
73
+ }
74
+
75
+ let changed = false;
76
+ for (const line of required) {
77
+ if (!current.includes(line)) {
78
+ current += (current.endsWith("\n") || current.length === 0 ? "" : "\n") + line + "\n";
79
+ changed = true;
80
+ }
81
+ }
82
+
83
+ if (changed && !dryRun) fs.writeFileSync(gitignorePath, current, "utf-8");
84
+ return changed;
85
+ }
86
+
87
+ function writeInstallMarker(target) {
88
+ const markerPath = path.join(target, "_edusquads", "INSTALLATION.json");
89
+ const payload = {
90
+ installedAt: new Date().toISOString(),
91
+ package: "edusquads-cli",
92
+ version: "0.1.0"
93
+ };
94
+ ensureDir(path.dirname(markerPath));
95
+ if (!dryRun) fs.writeFileSync(markerPath, JSON.stringify(payload, null, 2), "utf-8");
96
+ }
97
+
98
+ function install() {
99
+ if (!fs.existsSync(targetDir)) {
100
+ console.error(`Diretório alvo não existe: ${targetDir}`);
101
+ process.exit(1);
102
+ }
103
+
104
+ const report = { created: 0, overwritten: 0, skipped: 0 };
105
+
106
+ for (const item of INSTALL_ITEMS) {
107
+ const src = path.join(PACKAGE_ROOT, item.src);
108
+ const dest = path.join(targetDir, item.dest);
109
+
110
+ if (!fs.existsSync(src)) {
111
+ console.error(`Origem não encontrada no pacote: ${item.src}`);
112
+ process.exit(1);
113
+ }
114
+
115
+ const stat = fs.statSync(src);
116
+ if (stat.isDirectory()) {
117
+ copyDir(src, dest, report);
118
+ } else {
119
+ const status = copyFile(src, dest);
120
+ report[status] = (report[status] || 0) + 1;
121
+ }
122
+ }
123
+
124
+ const gitignoreChanged = patchGitignore(targetDir);
125
+ writeInstallMarker(targetDir);
126
+
127
+ console.log(`\nEduSquads ${dryRun ? "(simulação) " : ""}instalado em: ${targetDir}`);
128
+ console.log(`Arquivos criados: ${report.created}`);
129
+ console.log(`Arquivos sobrescritos: ${report.overwritten}`);
130
+ console.log(`Arquivos ignorados (já existiam): ${report.skipped}`);
131
+ console.log(`.gitignore atualizado: ${gitignoreChanged ? "sim" : "não"}`);
132
+ console.log(`\nNo Claude Code, abra este projeto e use: /edusquads\n`);
133
+ }
134
+
135
+ if (args.includes("--help") || args.includes("-h")) {
136
+ help();
137
+ process.exit(0);
138
+ }
139
+
140
+ if (!["install", "init"].includes(command)) {
141
+ console.error(`Comando inválido: ${command}`);
142
+ help();
143
+ process.exit(1);
144
+ }
145
+
146
+ install();