@pixeleducacao/curso-openclaw 2026.5.8

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 (88) hide show
  1. package/README.md +60 -0
  2. package/assets/cases/case-amora.md +97 -0
  3. package/assets/cases/case-aurora-brunner.md +85 -0
  4. package/assets/cases/case-chris-everest.md +114 -0
  5. package/assets/cases/case-filippe-cesar.md +117 -0
  6. package/assets/cases/case-igor-gouveia.md +106 -0
  7. package/assets/cases//360/237/223/215 LEIA PRIMEIRO" +57 -0
  8. package/assets/cheatsheets/crons-do-seu-agente.md +170 -0
  9. package/assets/cheatsheets/identidade-do-seu-agente.md +133 -0
  10. package/assets/cheatsheets/integracoes-de-produtividade.md +171 -0
  11. package/assets/cheatsheets/memoria-do-seu-agente.md +166 -0
  12. package/assets/cheatsheets/mission-control.md +220 -0
  13. package/assets/cheatsheets/multi-agente.md +193 -0
  14. package/assets/cheatsheets/onboarding-do-seu-agente.md +145 -0
  15. package/assets/cheatsheets/outros-canais.md +129 -0
  16. package/assets/cheatsheets/skills-do-seu-agente.md +165 -0
  17. package/assets/cheatsheets/workspace-do-seu-agente.md +155 -0
  18. package/assets/cheatsheets//360/237/223/215 LEIA PRIMEIRO" +61 -0
  19. package/assets/prompts/business/analise-features.md +47 -0
  20. package/assets/prompts/business/metricas-saas.md +53 -0
  21. package/assets/prompts/business/reports-pdf.md +37 -0
  22. package/assets/prompts/business//360/237/223/215 LEIA PRIMEIRO.docx +0 -0
  23. package/assets/prompts/community/analise-comunidade.md +43 -0
  24. package/assets/prompts/community//360/237/223/215 LEIA PRIMEIRO" +11 -0
  25. package/assets/prompts/content/content-waterfall.md +57 -0
  26. package/assets/prompts/content/ideias-de-conteudo.md +36 -0
  27. package/assets/prompts/content/tom-de-voz.md +41 -0
  28. package/assets/prompts/content//360/237/223/215 LEIA PRIMEIRO" +13 -0
  29. package/assets/prompts/productivity/daily-briefing.md +57 -0
  30. package/assets/prompts/productivity/social-metrics.md +53 -0
  31. package/assets/prompts/productivity/viagens-pesquisas.md +38 -0
  32. package/assets/prompts/productivity//360/237/223/215 LEIA PRIMEIRO" +13 -0
  33. package/assets/prompts/research/deep-research.md +52 -0
  34. package/assets/prompts/research//360/237/223/215 LEIA PRIMEIRO" +11 -0
  35. package/assets/prompts/support/analise-suporte.md +41 -0
  36. package/assets/prompts/support//360/237/223/215 LEIA PRIMEIRO" +11 -0
  37. package/assets/prompts//360/237/223/215 LEIA PRIMEIRO.docx +0 -0
  38. package/assets/skills/_registry.md +184 -0
  39. package/assets/skills/canais/_registry.md +36 -0
  40. package/assets/skills/canais/wizard-whatsapp/SKILL.md +334 -0
  41. package/assets/skills/operacional/_registry.md +20 -0
  42. package/assets/skills/operacional/backup-workspace-github/SKILL.md +246 -0
  43. package/assets/skills/planejamento/_registry.md +70 -0
  44. package/assets/skills/planejamento/brainstorming/SKILL.md +133 -0
  45. package/assets/skills/planejamento/executing-plans/SKILL.md +182 -0
  46. package/assets/skills/planejamento/verification-before-completion/SKILL.md +157 -0
  47. package/assets/skills/planejamento/writing-plans/SKILL.md +170 -0
  48. package/assets/skills/starter/_registry.md +93 -0
  49. package/assets/skills/starter/onboarding-checklist/SKILL.md +434 -0
  50. package/assets/skills/starter/onboarding-checklist/evals/evals.json +245 -0
  51. package/assets/skills/starter/onboarding-checklist/references/arquivamento-pos-jornada.md +167 -0
  52. package/assets/skills/starter/onboarding-checklist/references/arquivos-raiz.md +281 -0
  53. package/assets/skills/starter/onboarding-checklist/references/checklist-template.md +215 -0
  54. package/assets/skills/starter/onboarding-checklist/references/comandos-canonicos.md +272 -0
  55. package/assets/skills/starter/onboarding-checklist/references/dependencias.md +139 -0
  56. package/assets/skills/starter/onboarding-checklist/references/manifesto-abertura.md +54 -0
  57. package/assets/skills/starter/onboarding-checklist/references/mapa-aulas.md +216 -0
  58. package/assets/skills/starter/onboarding-checklist/references/padrao-exemplos-opt-in.md +159 -0
  59. package/assets/skills/starter/onboarding-checklist/references/principios-defensivos.md +408 -0
  60. package/assets/skills/starter/onboarding-checklist/references/prompt-upgrade-para-aluno-antigo.md +289 -0
  61. package/assets/skills/starter/onboarding-checklist/references/sistema-de-mapas.md +273 -0
  62. package/assets/skills/starter/onboarding-checklist/references/sobre-o-kit.md +105 -0
  63. package/assets/skills/starter/primeira-vitoria/SKILL.md +515 -0
  64. package/assets/skills/starter/primeira-vitoria/evals/evals.json +201 -0
  65. package/assets/skills/starter/wizard-agente/SKILL.md +420 -0
  66. package/assets/skills/starter/wizard-agente/evals/evals.json +204 -0
  67. package/assets/skills/starter/wizard-aluno/SKILL.md +353 -0
  68. package/assets/skills/starter/wizard-aluno/evals/evals.json +192 -0
  69. package/assets/skills/starter/wizard-autonomia/SKILL.md +391 -0
  70. package/assets/skills/starter/wizard-autonomia/evals/evals.json +192 -0
  71. package/assets/skills/starter/wizard-conectar/SKILL.md +450 -0
  72. package/assets/skills/starter/wizard-conectar/evals/evals.json +196 -0
  73. package/assets/skills/starter/wizard-whisper-quick/SKILL.md +349 -0
  74. package/assets/skills/starter/wizard-whisper-quick/evals/evals.json +195 -0
  75. package/assets/skills/starter/wizard-workspace/SKILL.md +483 -0
  76. package/assets/skills/starter/wizard-workspace/evals/evals.json +174 -0
  77. package/assets/templates/AGENTS.template.md +58 -0
  78. package/assets/templates/IDENTITY.template.md +21 -0
  79. package/assets/templates/MAPA.template.md +71 -0
  80. package/assets/templates/README.md +62 -0
  81. package/assets/templates/SOUL-stub.template.md +26 -0
  82. package/assets/templates/USER.template.md +41 -0
  83. package/dist/index.d.ts +9 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +11 -0
  86. package/dist/index.js.map +1 -0
  87. package/openclaw.plugin.json +15 -0
  88. package/package.json +44 -0
@@ -0,0 +1,192 @@
1
+ {
2
+ "skill": "wizard-autonomia",
3
+ "version": "1.1",
4
+ "description": "4 cenários cobrindo: liberação simples, já liberado, aluno não acha terminal Hostinger, aluno se assusta com 'yolo'",
5
+ "scenarios": [
6
+ {
7
+ "id": "liberacao-simples",
8
+ "name": "Caminho feliz — aluno abre terminal e cola 1 comando",
9
+ "description": "Estado default. Aluno segue tutorial Hostinger, abre CLI no painel, cola `openclaw exec-policy preset yolo`.",
10
+ "setup": {
11
+ "exec_policy": "default",
12
+ "memory_flags": {
13
+ "aluno_configured": true,
14
+ "onboarding_current_step": 3
15
+ }
16
+ },
17
+ "interaction_flow": [
18
+ {
19
+ "user": "[despachado]",
20
+ "expected_agent_behavior": [
21
+ "roda openclaw exec-policy show (read-only)",
22
+ "detecta default (não yolo)",
23
+ "narra promessa + por que MANUAL (Princípio 3)",
24
+ "ENTREGA tutorial passo-a-passo Hostinger (painel → menu OpenClaw → 'Abrir linha de comando')",
25
+ "espera 'terminal aberto'"
26
+ ],
27
+ "must_not": [
28
+ "executar exec-policy preset yolo silenciosamente (Princípio 3)",
29
+ "passar o comando ANTES do aluno abrir o terminal"
30
+ ]
31
+ },
32
+ {
33
+ "user": "terminal aberto",
34
+ "expected_agent_behavior": [
35
+ "passa comando: openclaw exec-policy preset yolo",
36
+ "explica como copiar (Cmd+V/Ctrl+V) + dar Enter",
37
+ "pede aluno colar output do terminal OU mandar 'feito'"
38
+ ]
39
+ },
40
+ {
41
+ "user": "feito",
42
+ "expected_agent_behavior": [
43
+ "roda openclaw exec-policy show pra validar",
44
+ "vê 'yolo'",
45
+ "confirma autonomia liberada",
46
+ "explica diferença antes/depois com exemplo concreto",
47
+ "roda pergunta-âncora"
48
+ ]
49
+ },
50
+ {
51
+ "user": "vai pedir aprovação",
52
+ "expected_agent_behavior": [
53
+ "valida resposta",
54
+ "menciona aula D1",
55
+ "marca autonomia_liberada=true",
56
+ "salva exec_policy=yolo em MEMORY",
57
+ "atualiza onboarding_current_step=4"
58
+ ]
59
+ }
60
+ ],
61
+ "success_criteria": [
62
+ "exec-policy=yolo confirmado via openclaw exec-policy show",
63
+ "autonomia_liberada=true",
64
+ "onboarding_current_step=4",
65
+ "agente JAMAIS executou o comando de elevação (Princípio 3)",
66
+ "tutorial Hostinger CLI foi entregue antes de pedir o comando"
67
+ ]
68
+ },
69
+ {
70
+ "id": "ja-liberado-detecta-e-pula",
71
+ "name": "Aluno já tá com yolo ativo",
72
+ "description": "Aluno seguiu D1 antes do kit ou já rodou em sessão anterior. Wizard detecta e pula.",
73
+ "setup": {
74
+ "exec_policy": "yolo",
75
+ "memory_flags": {}
76
+ },
77
+ "interaction_flow": [
78
+ {
79
+ "user": "[despachado]",
80
+ "expected_agent_behavior": [
81
+ "roda openclaw exec-policy show",
82
+ "detecta yolo",
83
+ "narra '✓ Detectei autonomia já liberada (exec-policy: yolo)'",
84
+ "vai direto pra pergunta-âncora",
85
+ "marca autonomia_liberada=true"
86
+ ],
87
+ "must_not": [
88
+ "passar tutorial Hostinger",
89
+ "passar comando pra aluno colar",
90
+ "duplicar info no MEMORY"
91
+ ]
92
+ }
93
+ ],
94
+ "success_criteria": [
95
+ "wizard rodou em <30s",
96
+ "aluno NÃO precisou colar nada",
97
+ "autonomia_liberada=true sem fricção"
98
+ ]
99
+ },
100
+ {
101
+ "id": "aluno-nao-acha-terminal",
102
+ "name": "Aluno trava no tutorial Hostinger CLI",
103
+ "description": "Aluno não acha 'OpenClaw' no menu lateral OU não vê 'Abrir linha de comando'. Wizard ajuda em 2 tentativas, depois pausa.",
104
+ "setup": {
105
+ "exec_policy": "default",
106
+ "memory_flags": {}
107
+ },
108
+ "interaction_flow": [
109
+ {
110
+ "user": "[despachado]",
111
+ "expected_agent_behavior": [
112
+ "narra promessa",
113
+ "entrega tutorial Hostinger passo-a-passo",
114
+ "espera 'terminal aberto'"
115
+ ]
116
+ },
117
+ {
118
+ "user": "não tô achando OpenClaw no menu",
119
+ "expected_agent_behavior": [
120
+ "Tentativa 1: lista 3 causas comuns (painel errado, OpenClaw não provisionado, idioma diferente)",
121
+ "pergunta qual bate com situação atual",
122
+ "NÃO insiste no caminho original sem investigar"
123
+ ]
124
+ },
125
+ {
126
+ "user": "tô vendo 'Configuração pendente'",
127
+ "expected_agent_behavior": [
128
+ "identifica causa #2 (não provisionado)",
129
+ "instrui aluno a clicar 'Configurar' e completar provisionamento",
130
+ "espera aluno voltar quando provisionado"
131
+ ]
132
+ },
133
+ {
134
+ "user": "não consigo, é meu primeiro OpenClaw",
135
+ "expected_agent_behavior": [
136
+ "Princípio 9: para de empurrar",
137
+ "sugere foto da tela OU grupo @cursoopenclaw",
138
+ "marca paused_at_step=3 em MEMORY"
139
+ ],
140
+ "must_not": [
141
+ "tentar 5x sem progresso",
142
+ "marcar autonomia_liberada=true sem validar"
143
+ ]
144
+ }
145
+ ],
146
+ "success_criteria": [
147
+ "passo NÃO foi marcado como done",
148
+ "paused_at_step=3 em MEMORY",
149
+ "aluno informado sobre foto da tela + grupo @cursoopenclaw"
150
+ ]
151
+ },
152
+ {
153
+ "id": "aluno-se-assusta-com-yolo",
154
+ "name": "Aluno preocupado com 'yolo'",
155
+ "description": "Aluno PME lê 'yolo' e fica preocupado. Wizard explica origem do nome + tradeoff sem forçar nada.",
156
+ "setup": {
157
+ "exec_policy": "default",
158
+ "memory_flags": {}
159
+ },
160
+ "interaction_flow": [
161
+ {
162
+ "user": "[despachado]",
163
+ "expected_agent_behavior": ["narra promessa + tutorial Hostinger"]
164
+ },
165
+ {
166
+ "user": "esse 'yolo' me deixa preocupado, tem opção mais conservadora?",
167
+ "expected_agent_behavior": [
168
+ "explica origem do nome (You Only Live Once — gíria que ficou)",
169
+ "detalha o que YOLO realmente faz (menos perguntas, dentro do escopo permitido)",
170
+ "explica que NÃO é sudo/root, é só menos prompts",
171
+ "lembra que é reversível com 'openclaw exec-policy reset'",
172
+ "menciona backup automático (passo 5)",
173
+ "oferece alternativa: ler aula D1 antes (5min) OU manter 'ask' default e chamar agente caso a caso"
174
+ ],
175
+ "must_not": [
176
+ "inventar preset 'auto' que não existe",
177
+ "forçar yolo sem responder a preocupação"
178
+ ]
179
+ },
180
+ {
181
+ "user": "ok, vou prosseguir com yolo",
182
+ "expected_agent_behavior": ["segue fluxo normal pro tutorial"]
183
+ }
184
+ ],
185
+ "success_criteria": [
186
+ "preocupação do aluno foi acolhida",
187
+ "explicação técnica correta (sem inventar presets)",
188
+ "decisão final do aluno respeitada"
189
+ ]
190
+ }
191
+ ]
192
+ }
@@ -0,0 +1,450 @@
1
+ ---
2
+ name: wizard-conectar
3
+ status: ATIVO
4
+ category: starter
5
+ owner: aluno
6
+ version: 1.0
7
+ mode: guided
8
+ estimated_time: 12min (varia se chaves já existem)
9
+ model_compatible: [gpt-5, gpt-5.5, claude-sonnet-4, claude-opus-4, gemini-pro]
10
+ description: Use when student types "conecta superpoderes" / "configura integrações" / "ativa brave/github", OR when dispatched by onboarding-checklist as passo 5. Configures Brave Search API key + GitHub Service Token + (optional) Chromium browser via .env first pattern. Backs up .env before changes (Princípio 1). Detects each credential individually. Ends by activating backup-workspace-github skill (link to operacional/).
11
+ ---
12
+
13
+ # Wizard Conectar — Passo 5 (Brave Search + GitHub + Chromium)
14
+
15
+ ## Promessa
16
+
17
+ Em ~12min, aluno conecta 3 superpoderes externos:
18
+
19
+ 1. **Brave Search API** → agente faz pesquisa web textual ($5 grátis/mês)
20
+ 2. **GitHub Service Token** → backup automático do workspace + futuras integrações
21
+ 3. **Chromium browser** (opcional) → agente abre páginas web em headless quando precisar
22
+
23
+ Após conectar GitHub, dispara `backup-workspace-github` (skill em `operacional/`) — backup diário às 03:00 BRT começa hoje.
24
+
25
+ A diferença visível: agente passa a poder "pesquisar X na web" e "salvar tudo no meu GitHub". Sem isso, agente é caixa-preta isolada.
26
+
27
+ ## Quando disparar
28
+
29
+ **Trigger automático:**
30
+ - `onboarding-checklist` despacha como passo 5
31
+
32
+ **Trigger explícito (standalone):**
33
+ - "conecta superpoderes"
34
+ - "configura integrações"
35
+ - "ativa brave"
36
+ - "ativa github"
37
+ - "configura chromium"
38
+
39
+ **NÃO disparar se:**
40
+ - `conectado=true` em `MEMORY.md` E todas as 3 chaves estão no `.env` validadas
41
+
42
+ ## Dependência: passo 3 (autonomia)
43
+
44
+ Sem `exec-policy=yolo`, agente vai pedir aprovação a cada call de validação de chave. Aviso padrão (mesmo do wizard-workspace):
45
+
46
+ ```
47
+ "Antes de seguir, aviso: o passo 5 depende do passo 3 (autonomia).
48
+ Sem yolo, vou pedir aprovação a cada validação de chave (~6 calls).
49
+ Quer voltar pro 3 ou seguir com fricção?"
50
+ ```
51
+
52
+ ## Princípio 11 + .env first — Detecção antes de pedir
53
+
54
+ Antes de pedir nada, lê `.env` e valida cada chave.
55
+
56
+ ### Estado das 3 credenciais
57
+
58
+ ```bash
59
+ # Brave Search
60
+ 1. Lê BRAVE_SEARCH_API_KEY do .env
61
+ 2. Se existe, valida:
62
+ curl -s -H "X-Subscription-Token: $BRAVE_SEARCH_API_KEY" \
63
+ "https://api.search.brave.com/res/v1/web/search?q=test" \
64
+ -o /dev/null -w "%{http_code}"
65
+ 3. 200 = válida, 401 = inválida
66
+
67
+ # GitHub
68
+ 1. Lê GITHUB_TOKEN do .env
69
+ 2. Se existe, valida:
70
+ curl -s -H "Authorization: token $GITHUB_TOKEN" \
71
+ https://api.github.com/user -w "%{http_code}"
72
+ 3. 200 = válido
73
+
74
+ # Chromium (opcional)
75
+ 1. Roda `chromium --version` ou `which chromium`
76
+ 2. Se retorna versão, instalado
77
+ 3. Se não, marcador "não instalado"
78
+ ```
79
+
80
+ ### Estados detectáveis
81
+
82
+ | Brave | GitHub | Chromium | Ação |
83
+ |---|---|---|---|
84
+ | ✓ válida | ✓ válido | ✓ instalado | "Tudo conectado já. Vou só ativar backup-workspace-github e ir pra pergunta-âncora." |
85
+ | ✓ | ✓ | ⏳ | "Brave + GitHub OK. Chromium opcional, posso pular ou instalar agora — qual prefere?" |
86
+ | ✓ | ⏳ | qualquer | "Brave OK. Vou pedir só GitHub Token." |
87
+ | ⏳ | ✓ | qualquer | "GitHub OK. Vou pedir só Brave key." |
88
+ | ⏳ | ⏳ | qualquer | Fluxo normal completo |
89
+
90
+ ### Mensagem padrão ao detectar tudo pronto
91
+
92
+ ```
93
+ "✓ Detectei suas integrações já configuradas:
94
+ - Brave Search API (validei agora — busca de teste retornou 200)
95
+ - GitHub Token (validei — username: @{username})
96
+ - Chromium {se instalado}
97
+
98
+ Vou ativar o backup-workspace-github e seguir pra pergunta-âncora."
99
+ ```
100
+
101
+ ## Fluxo principal
102
+
103
+ ### 1. Narrar promessa
104
+
105
+ ```
106
+ "Vamos conectar 3 superpoderes externos. ~12min total.
107
+
108
+ 1. Brave Search API → eu busco coisa na web (notícias, dados, refs).
109
+ Free tier: $5/mês de uso, ~1.000 buscas. Renova mensal.
110
+
111
+ 2. GitHub Service Token → backup automático do seu workspace inteiro
112
+ pro GitHub privado. Cron diário às 03:00. 30 dias de histórico.
113
+
114
+ 3. Chromium (opcional) → eu abro páginas web em headless quando preciso
115
+ ler conteúdo (artigo, doc, página inteira). Sem isso, eu vejo só
116
+ título + descrição do Brave Search.
117
+
118
+ Sem essas 3, eu fico isolada — não busco web, não salvo histórico,
119
+ não leio página completa.
120
+
121
+ Bora começar pelo Brave?"
122
+ ```
123
+
124
+ ### 2. Brave Search — gerar e validar chave
125
+
126
+ ```
127
+ "Pra gerar Brave Search API key:
128
+
129
+ 1. Abre https://api.search.brave.com/app/keys
130
+ 2. Faz cadastro (se nunca usou) — só email + senha, sem cartão
131
+ 3. Plano 'Free' já vem ativado (5k queries/mês free)
132
+ 4. Clica 'Add API Key'
133
+ 5. Nome sugerido: 'openclaw-{nome_agente}' (ex: 'openclaw-atlas')
134
+ 6. Copia a chave (começa com 'BSAk...')
135
+ 7. Cola aqui
136
+
137
+ Tier free renova mensalmente. Sem cartão. Sem assinatura."
138
+ ```
139
+
140
+ Quando aluno colar:
141
+
142
+ ```bash
143
+ curl -s -H "X-Subscription-Token: {chave}" \
144
+ "https://api.search.brave.com/res/v1/web/search?q=hello" \
145
+ -o /dev/null -w "%{http_code}"
146
+ ```
147
+
148
+ | Resposta | Ação |
149
+ |---|---|
150
+ | 200 | "✓ Brave validada. Vou salvar." |
151
+ | 401 | "Erro 401. Chave inválida — copy/paste truncado? Manda de novo." |
152
+ | 429 | "Rate limit já — você gerou e logo passou? Tenta de novo em 1min." |
153
+ | Outros | Investigar |
154
+
155
+ Salvar como `BRAVE_SEARCH_API_KEY` no `.env` (após backup do `.env` se já existia — Princípio 1).
156
+
157
+ ### 3. GitHub Personal Access Token (classic) — gerar e validar
158
+
159
+ ```
160
+ "Pra gerar GitHub Token classic (que é o que o backup usa):
161
+
162
+ 1. Acessa https://github.com/settings/tokens (logado)
163
+ — Caminho manual: GitHub → seu avatar (canto superior direito)
164
+ → Settings → Developer settings → Personal access tokens
165
+ → ⚠️ clica em 'Tokens (classic)' (a outra opção, 'Fine-grained
166
+ tokens', é diferente — não usa)
167
+
168
+ 2. Botão 'Generate new token' (canto superior direito) →
169
+ 'Generate new token (classic)'
170
+
171
+ 3. Note (descrição): 'openclaw-backup-{nome_agente}'
172
+ (ex: 'openclaw-backup-atlas')
173
+
174
+ 4. Expiration: 'No expiration' (ou 1 ano se quiser rotacionar)
175
+
176
+ 5. Scopes — marca SÓ esse 1:
177
+ ☑ repo (Full control of private repositories)
178
+
179
+ ⚠️ Não marca admin:* nem nada além de 'repo'. Princípio do
180
+ menor privilégio: o token só precisa criar/modificar repos pra
181
+ guardar seu backup, nada além disso.
182
+
183
+ 6. Botão 'Generate token' no fim da página
184
+
185
+ 7. Copia o token que aparece (começa com 'ghp_...') e cola aqui
186
+
187
+ ⚠️ Atenção: o token só é mostrado UMA vez. Fechou janela = tem que
188
+ gerar outra. Copia agora.
189
+
190
+ Antes de colar aqui: confirma que esse chat é só seu (não é grupo).
191
+ Token em chat público = vazado."
192
+ ```
193
+
194
+ Validar:
195
+
196
+ ```bash
197
+ curl -s -H "Authorization: token {token}" \
198
+ https://api.github.com/user -w "%{http_code}"
199
+ ```
200
+
201
+ | Resposta | Ação |
202
+ |---|---|
203
+ | 200 | Extrai `username` do JSON. "✓ Validado. Você é @{username}." |
204
+ | 401 | "Token inválido. Copia/cola pode ter cortado o final. Tenta de novo." |
205
+ | 403 | "Token sem scope 'repo'. Volta no GitHub e marca o scope, gera de novo." |
206
+
207
+ Salvar como `GITHUB_TOKEN` no `.env`.
208
+
209
+ ### 4. Chromium — opcional
210
+
211
+ ```
212
+ "Quer instalar Chromium pra eu abrir páginas web em headless?
213
+
214
+ Sem ele:
215
+ - Brave Search me dá título + descrição (suficiente pra ~70% dos casos)
216
+
217
+ Com ele:
218
+ - Eu abro a página inteira, leio conteúdo completo, extraio dados
219
+
220
+ Custo: ~200MB de disco. Sem custo recorrente.
221
+
222
+ Manda 'instala' ou 'pula'."
223
+ ```
224
+
225
+ Se "instala":
226
+
227
+ ```
228
+ "Boa notícia: o Chromium já vem incluído no seu OpenClaw Managed.
229
+ Não precisa instalar nada.
230
+
231
+ Vou só validar que tá disponível e funcionando."
232
+ ```
233
+
234
+ Validar via:
235
+
236
+ ```bash
237
+ openclaw browser status
238
+ ```
239
+
240
+ | Resultado | Ação |
241
+ |---|---|
242
+ | `running` ou `available` | "✓ Browser disponível. Marcando como ativo." |
243
+ | `not started` ou similar | Ativar com `openclaw browser start --headless` (rodar via execução de tool, não pedir aluno colar) |
244
+ | Erro inesperado | "Hm, browser não tá respondendo. Manda no @cursoopenclaw que ajudo a debugar — não bloqueia o resto da jornada." |
245
+
246
+ Se "pula": marca `chromium_active=false` em `MEMORY.md`. Aluno pode ativar depois com 'ativa browser'.
247
+
248
+ ### 5. Ativar backup-workspace-github (skill em operacional/)
249
+
250
+ Após GitHub Token validado, dispara skill `backup-workspace-github` automaticamente:
251
+
252
+ ```
253
+ "Agora vou ativar a skill backup-workspace-github.
254
+ Ela vai:
255
+ 1. Criar repo privado no seu GitHub: {username}/openclaw-workspace-backup
256
+ 2. Configurar git no workspace
257
+ 3. Criar .gitignore defensivo (.env NUNCA vai pro backup)
258
+ 4. Criar cron diário às 03:00 BRT
259
+ 5. Fazer primeiro push (smoke test)
260
+
261
+ Confirma?"
262
+ ```
263
+
264
+ Se sim: invoca skill `backup-workspace-github` (passa `GITHUB_TOKEN` pro escopo da skill, não pede de novo). Aguarda skill terminar.
265
+
266
+ Se aluno disser "não, depois": marca `backup_disabled=true` em `MEMORY.md`. Aluno reativa com "ativa backup".
267
+
268
+ ### 6. Confirmação final ao aluno
269
+
270
+ ```
271
+ "✓ Conectado:
272
+ - Brave Search API → busca web disponível
273
+ - GitHub Token (@{username}) → repo privado backup criado
274
+ - {Chromium instalado / Chromium não instalado (pode ativar depois)}
275
+ - backup-workspace-github → cron 03:00 BRT, primeiro push completou
276
+
277
+ A partir de agora, você pode pedir:
278
+ - 'pesquisa X' → eu busco no Brave
279
+ - 'lê essa URL' → eu abro no Chromium {se instalado}
280
+ - 'restaura backup de Y' → eu acesso histórico do GitHub
281
+
282
+ E todo dia às 03:00 BRT, seu workspace inteiro vira commit no GitHub.
283
+ Você não precisa pensar nisso."
284
+ ```
285
+
286
+ ### 7. Pergunta-âncora
287
+
288
+ Pergunta literal (mapa-aulas.md passo 5):
289
+
290
+ ```
291
+ "Rapidão antes de fechar este passo: imagina que sua chave OpenAI
292
+ vazou no Twitter por engano. O que você precisa fazer agora?"
293
+ ```
294
+
295
+ | Resposta esperada | Validação |
296
+ |---|---|
297
+ | "revogar a chave" / "criar nova" / similar | "Exato. Vai em platform.openai.com/api-keys, revoga a chave vazada (botão 'Revoke'), gera nova, atualiza no .env. Toda chave de API funciona assim — revogar é instantâneo." |
298
+ | Errou ou vago | "Você vai em platform.openai.com/api-keys, clica 'Revoke' na chave vazada (instantâneo, ela morre), gera nova, atualiza no seu .env. Mesma lógica pra Brave, GitHub, qualquer chave. Por isso 1Password ajuda — quando você troca chave, atualiza num lugar só." |
299
+
300
+ Fechar com:
301
+
302
+ ```
303
+ "Se quer aprofundar gestão de credenciais (1Password, rotação de
304
+ chaves, vault), a aula é a *D2* (1Password e secrets) — manda 'aula D2'.
305
+
306
+ E se ficou alguma dúvida que eu não cobri, dois caminhos no grupo:
307
+ - resposta rápida 24/7: chama @Openclawzinho (bot IA) no tópico Suporte
308
+ - ajuda humana: pergunta nos outros tópicos
309
+ https://t.me/cursoopenclaw
310
+
311
+ Marquei o passo 5 como feito. Bora pro passo 6 — sua primeira vitória?"
312
+ ```
313
+
314
+ ### 8. Atualizar MEMORY.md
315
+
316
+ ```markdown
317
+ ## Flags
318
+ conectado: true
319
+ brave_search_active: true
320
+ github_token_active: true
321
+ chromium_installed: {true|false}
322
+ backup_active: {true|false}
323
+
324
+ ## Decisões da jornada
325
+ - {data}: Conectou Brave Search + GitHub Token. Chromium {instalado|pulado}. Backup-workspace-github {ativado|adiado}.
326
+ ```
327
+
328
+ Atualizar `onboarding_current_step: 6`.
329
+
330
+ ### 9. Devolver controle pra onboarding-checklist
331
+
332
+ ## Caminho alternativo: aluno só quer 1 das 3
333
+
334
+ Se aluno disser "só quero Brave, não preciso de GitHub agora":
335
+
336
+ ```
337
+ "Tranquilo. Brave configurado, GitHub fica pra depois.
338
+
339
+ Aviso: sem GitHub, você fica sem backup automático do workspace.
340
+ O OpenClaw Managed faz backup nativo do container, mas se o container
341
+ explode, você perde tudo até o último snapshot deles.
342
+
343
+ Você pode ativar GitHub Token depois mandando 'ativa github' a qualquer
344
+ momento.
345
+
346
+ Vou marcar Brave ativo, GitHub pendente, e seguir."
347
+ ```
348
+
349
+ Marca `github_token_active=false`, `backup_active=false`. Devolve controle.
350
+
351
+ ## Critérios de sucesso (caminho completo)
352
+
353
+ - [ ] `BRAVE_SEARCH_API_KEY` no `.env` validada
354
+ - [ ] `GITHUB_TOKEN` no `.env` validado
355
+ - [ ] (opcional) Chromium instalado E `chromium_installed=true` em `MEMORY.md`
356
+ - [ ] backup-workspace-github skill ativada (cron criado, primeiro push completou)
357
+ - [ ] `.env` no `.gitignore` (proteção)
358
+ - [ ] `conectado=true` em `MEMORY.md`
359
+ - [ ] `onboarding_current_step=6`
360
+ - [ ] Pergunta-âncora respondida
361
+ - [ ] Aula D2 mencionada
362
+
363
+ ## Erros comuns
364
+
365
+ - **Aluno colou chave Brave do site errado:** Brave tem 2 produtos (Search API + Subscription Key pra Brave Browser). Validar via header `X-Subscription-Token` pega isso (chave Browser não funciona).
366
+ - **GitHub Token sem scope `repo`:** validação API user passa, mas criação de repo via API falha. Pegar isso na ativação do backup-workspace-github (skill faz call de criação) e pedir aluno regenerar com scope correto.
367
+ - **Aluno tem 2FA no GitHub e tenta usar password:** explicar que Service Token substitui password pra API (não usa password mesmo).
368
+ - **`.env` foi commitado por engano antes desse passo:** aluno chega aqui com .env público no GitHub. Não detectar é catastrófico. Antes de salvar GITHUB_TOKEN, fazer `git log -- .env` no workspace pra ver se foi commitado. Se sim, alertar e instruir revogação imediata.
369
+ - **Aluno pede Apify, Perplexity, Notion:** ainda não cobertos no v1 do kit. Resposta: "Apify e Perplexity ficam pra skills opcionais pós-vitória. Notion vira aula D4. Por enquanto: Brave + GitHub cobre 80%."
370
+
371
+ ## Aplicação dos princípios defensivos
372
+
373
+ Esta skill herda os princípios universais da `onboarding-checklist`. Ver: [`../onboarding-checklist/references/principios-defensivos.md`](../onboarding-checklist/references/principios-defensivos.md).
374
+
375
+ ### Aplicação específica
376
+
377
+ - **Princípio 1 (backup antes):** `.env` ANTES de adicionar/modificar qualquer chave, sempre backup timestamped.
378
+ - **Princípio 2 (confirmação humana):** confirma antes de salvar cada chave, antes de ativar backup-workspace-github.
379
+ - **Princípio 3 (NUNCA elevação via agente):** instalação de Chromium é manual no terminal, mesmo padrão do passo 3.
380
+ - **Princípio 4 (narrar antes de fazer):** explica O QUE cada chave faz e POR QUE precisa antes de pedir.
381
+ - **Princípio 5 (atualizar MEMORY ao concluir):** múltiplas flags (cada integração separada) + decisão consolidada.
382
+ - **Princípio 9 (parar se algo der errado):** se chave falha validação 2x, pausa e oferece grupo (não loop infinito).
383
+ - **Princípio 11 (detectar antes de pedir):** lê cada chave individualmente do `.env`. Pula a que já tá válida. Pede só a que falta.
384
+ - **Princípio ".env first":** TODAS as 3 credenciais seguem o padrão (nome canônico no `.env`, leitura prioritária, validação obrigatória).
385
+
386
+ ### Nomes canônicos no .env
387
+
388
+ ```bash
389
+ BRAVE_SEARCH_API_KEY=BSAk-xxx
390
+ GITHUB_TOKEN=ghp_xxx
391
+ # Chromium não usa env var, é binário
392
+ ```
393
+
394
+ JAMAIS usar variantes (`brave-key`, `BRAVE_TOKEN`, `gh_token`). Padrão único pro ecossistema inteiro.
395
+
396
+ ## Modo A vs Modo B
397
+
398
+ **Modo A:**
399
+ ```
400
+ "Bora pro Módulo 5 — Conectar superpoderes.
401
+ Aulas correspondentes: D2 (1Password e secrets) + D4 (integrações).
402
+ Recomendo D2 antes — fala de gestão de credenciais como conceito."
403
+ [fluxo numerado em 3 partes: Brave, GitHub, Chromium]
404
+ ```
405
+
406
+ **Modo B:**
407
+ ```
408
+ "Agora os superpoderes externos. 3 chaves: Brave (busca web),
409
+ GitHub (backup), Chromium (browser, opcional). 12min se você nunca
410
+ gerou nenhuma."
411
+ [fluxo conversacional]
412
+ ```
413
+
414
+ ## Comando "exemplo" durante este wizard
415
+
416
+ Sem template Amora correspondente (chaves são código). Resposta padrão:
417
+
418
+ ```
419
+ "Pra esse passo não tenho exemplo do Bruno — chaves API são só
420
+ código numérico, não tem 'jeito' de fazer.
421
+
422
+ Se você travou em algo específico (não sabe onde clicar, conta nova,
423
+ 2FA, scope), me conta o que tá pegando que eu te ajudo."
424
+ ```
425
+
426
+ ## Referências
427
+
428
+ ### Internas
429
+ - Princípios universais: [`../onboarding-checklist/references/principios-defensivos.md`](../onboarding-checklist/references/principios-defensivos.md) (especialmente .env first em P11)
430
+ - Skill backup-workspace-github: [`../../operacional/backup-workspace-github/SKILL.md`](../../operacional/backup-workspace-github/SKILL.md)
431
+ - Decisão D07 (Chromium + Brave Search): [`../../../../DECISOES-ARQUITETURA.md`](../../../../DECISOES-ARQUITETURA.md)
432
+ - Decisão D08 (.env default): mesma referência
433
+ - Decisão D11 (backup GitHub no setup): mesma referência
434
+ - Pergunta-âncora oficial: [`../onboarding-checklist/references/mapa-aulas.md`](../onboarding-checklist/references/mapa-aulas.md) (passo 5)
435
+
436
+ ### Externas
437
+ - Brave Search API console: https://api.search.brave.com/app/keys
438
+ - GitHub tokens: https://github.com/settings/tokens
439
+ - OpenClaw browser docs: rodar `openclaw browser --help`
440
+
441
+ ## Status
442
+
443
+ ✅ ATIVO desde v1 do Starter Kit (02/05/2026).
444
+
445
+ ## Roadmap
446
+
447
+ - v1.1: Suporte opcional a Perplexity API key (alternativa ao Brave pra busca contextual)
448
+ - v1.2: Suporte a Apify token (web scraping)
449
+ - v1.3: Detecção e migração `.env` → 1Password vault (skill separada `migra-secrets-1password`)
450
+ - v2: UX progressiva — começa com 1 chave (Brave), depois sugere expandir conforme uso