@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.
- package/README.md +60 -0
- package/assets/cases/case-amora.md +97 -0
- package/assets/cases/case-aurora-brunner.md +85 -0
- package/assets/cases/case-chris-everest.md +114 -0
- package/assets/cases/case-filippe-cesar.md +117 -0
- package/assets/cases/case-igor-gouveia.md +106 -0
- package/assets/cases//360/237/223/215 LEIA PRIMEIRO" +57 -0
- package/assets/cheatsheets/crons-do-seu-agente.md +170 -0
- package/assets/cheatsheets/identidade-do-seu-agente.md +133 -0
- package/assets/cheatsheets/integracoes-de-produtividade.md +171 -0
- package/assets/cheatsheets/memoria-do-seu-agente.md +166 -0
- package/assets/cheatsheets/mission-control.md +220 -0
- package/assets/cheatsheets/multi-agente.md +193 -0
- package/assets/cheatsheets/onboarding-do-seu-agente.md +145 -0
- package/assets/cheatsheets/outros-canais.md +129 -0
- package/assets/cheatsheets/skills-do-seu-agente.md +165 -0
- package/assets/cheatsheets/workspace-do-seu-agente.md +155 -0
- package/assets/cheatsheets//360/237/223/215 LEIA PRIMEIRO" +61 -0
- package/assets/prompts/business/analise-features.md +47 -0
- package/assets/prompts/business/metricas-saas.md +53 -0
- package/assets/prompts/business/reports-pdf.md +37 -0
- package/assets/prompts/business//360/237/223/215 LEIA PRIMEIRO.docx +0 -0
- package/assets/prompts/community/analise-comunidade.md +43 -0
- package/assets/prompts/community//360/237/223/215 LEIA PRIMEIRO" +11 -0
- package/assets/prompts/content/content-waterfall.md +57 -0
- package/assets/prompts/content/ideias-de-conteudo.md +36 -0
- package/assets/prompts/content/tom-de-voz.md +41 -0
- package/assets/prompts/content//360/237/223/215 LEIA PRIMEIRO" +13 -0
- package/assets/prompts/productivity/daily-briefing.md +57 -0
- package/assets/prompts/productivity/social-metrics.md +53 -0
- package/assets/prompts/productivity/viagens-pesquisas.md +38 -0
- package/assets/prompts/productivity//360/237/223/215 LEIA PRIMEIRO" +13 -0
- package/assets/prompts/research/deep-research.md +52 -0
- package/assets/prompts/research//360/237/223/215 LEIA PRIMEIRO" +11 -0
- package/assets/prompts/support/analise-suporte.md +41 -0
- package/assets/prompts/support//360/237/223/215 LEIA PRIMEIRO" +11 -0
- package/assets/prompts//360/237/223/215 LEIA PRIMEIRO.docx +0 -0
- package/assets/skills/_registry.md +184 -0
- package/assets/skills/canais/_registry.md +36 -0
- package/assets/skills/canais/wizard-whatsapp/SKILL.md +334 -0
- package/assets/skills/operacional/_registry.md +20 -0
- package/assets/skills/operacional/backup-workspace-github/SKILL.md +246 -0
- package/assets/skills/planejamento/_registry.md +70 -0
- package/assets/skills/planejamento/brainstorming/SKILL.md +133 -0
- package/assets/skills/planejamento/executing-plans/SKILL.md +182 -0
- package/assets/skills/planejamento/verification-before-completion/SKILL.md +157 -0
- package/assets/skills/planejamento/writing-plans/SKILL.md +170 -0
- package/assets/skills/starter/_registry.md +93 -0
- package/assets/skills/starter/onboarding-checklist/SKILL.md +434 -0
- package/assets/skills/starter/onboarding-checklist/evals/evals.json +245 -0
- package/assets/skills/starter/onboarding-checklist/references/arquivamento-pos-jornada.md +167 -0
- package/assets/skills/starter/onboarding-checklist/references/arquivos-raiz.md +281 -0
- package/assets/skills/starter/onboarding-checklist/references/checklist-template.md +215 -0
- package/assets/skills/starter/onboarding-checklist/references/comandos-canonicos.md +272 -0
- package/assets/skills/starter/onboarding-checklist/references/dependencias.md +139 -0
- package/assets/skills/starter/onboarding-checklist/references/manifesto-abertura.md +54 -0
- package/assets/skills/starter/onboarding-checklist/references/mapa-aulas.md +216 -0
- package/assets/skills/starter/onboarding-checklist/references/padrao-exemplos-opt-in.md +159 -0
- package/assets/skills/starter/onboarding-checklist/references/principios-defensivos.md +408 -0
- package/assets/skills/starter/onboarding-checklist/references/prompt-upgrade-para-aluno-antigo.md +289 -0
- package/assets/skills/starter/onboarding-checklist/references/sistema-de-mapas.md +273 -0
- package/assets/skills/starter/onboarding-checklist/references/sobre-o-kit.md +105 -0
- package/assets/skills/starter/primeira-vitoria/SKILL.md +515 -0
- package/assets/skills/starter/primeira-vitoria/evals/evals.json +201 -0
- package/assets/skills/starter/wizard-agente/SKILL.md +420 -0
- package/assets/skills/starter/wizard-agente/evals/evals.json +204 -0
- package/assets/skills/starter/wizard-aluno/SKILL.md +353 -0
- package/assets/skills/starter/wizard-aluno/evals/evals.json +192 -0
- package/assets/skills/starter/wizard-autonomia/SKILL.md +391 -0
- package/assets/skills/starter/wizard-autonomia/evals/evals.json +192 -0
- package/assets/skills/starter/wizard-conectar/SKILL.md +450 -0
- package/assets/skills/starter/wizard-conectar/evals/evals.json +196 -0
- package/assets/skills/starter/wizard-whisper-quick/SKILL.md +349 -0
- package/assets/skills/starter/wizard-whisper-quick/evals/evals.json +195 -0
- package/assets/skills/starter/wizard-workspace/SKILL.md +483 -0
- package/assets/skills/starter/wizard-workspace/evals/evals.json +174 -0
- package/assets/templates/AGENTS.template.md +58 -0
- package/assets/templates/IDENTITY.template.md +21 -0
- package/assets/templates/MAPA.template.md +71 -0
- package/assets/templates/README.md +62 -0
- package/assets/templates/SOUL-stub.template.md +26 -0
- package/assets/templates/USER.template.md +41 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/openclaw.plugin.json +15 -0
- 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
|