@pixeleducacao/curso-openclaw 2026.5.8 → 2026.5.9
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/assets/skills/_registry.md +41 -13
- package/assets/skills/operacional/_registry.md +6 -0
- package/assets/skills/operacional/backup-workspace-github/SKILL.md +39 -3
- package/assets/skills/operacional/commit-diario-workspace/SKILL.md +233 -0
- package/assets/skills/operacional/cron-resume-wizards/SKILL.md +329 -0
- package/assets/skills/operacional/seguranca-checklist/SKILL.md +202 -0
- package/assets/skills/starter/_registry.md +13 -9
- package/assets/skills/starter/continuar-jornada/SKILL.md +358 -0
- package/assets/skills/starter/gera-log-jornada/SKILL.md +338 -0
- package/assets/skills/starter/onboarding-checklist/SKILL.md +416 -88
- package/assets/skills/starter/onboarding-checklist/references/arquivos-raiz.md +44 -16
- package/assets/skills/starter/onboarding-checklist/references/aula-menus.md +304 -0
- package/assets/skills/starter/onboarding-checklist/references/checklist-template.md +70 -1
- package/assets/skills/starter/onboarding-checklist/references/comandos-canonicos.md +337 -9
- package/assets/skills/starter/onboarding-checklist/references/mapa-aulas.md +17 -12
- package/assets/skills/starter/onboarding-checklist/references/principios-defensivos.md +772 -0
- package/assets/skills/starter/onboarding-checklist/references/sistema-de-mapas.md +2 -2
- package/assets/skills/starter/onboarding-checklist/references/wizard-header-template.md +51 -0
- package/assets/skills/starter/primeira-vitoria/SKILL.md +448 -53
- package/assets/skills/starter/primeira-vitoria/evals/evals.json +2 -2
- package/assets/skills/starter/wizard-agente/SKILL.md +123 -17
- package/assets/skills/starter/wizard-agente/evals/evals.json +3 -3
- package/assets/skills/starter/wizard-aluno/SKILL.md +28 -3
- package/assets/skills/starter/wizard-aluno/evals/evals.json +1 -1
- package/assets/skills/starter/wizard-autonomia/SKILL.md +157 -27
- package/assets/skills/starter/wizard-autonomia/evals/evals.json +2 -2
- package/assets/skills/starter/wizard-autonomia/screenshots/painel-hostinger-cli.jpg +0 -0
- package/assets/skills/starter/wizard-conectar/SKILL.md +382 -74
- package/assets/skills/starter/wizard-conectar/screenshots/github-pat/01-avatar-settings.png +0 -0
- package/assets/skills/starter/wizard-conectar/screenshots/github-pat/02-developer-settings.png +0 -0
- package/assets/skills/starter/wizard-conectar/screenshots/github-pat/03-tokens-classic.png +0 -0
- package/assets/skills/starter/wizard-conectar/screenshots/github-pat/04-generate-classic.png +0 -0
- package/assets/skills/starter/wizard-whisper-quick/SKILL.md +160 -23
- package/assets/skills/starter/wizard-workspace/SKILL.md +23 -4
- package/assets/skills/starter/wizard-workspace/evals/evals.json +1 -1
- package/assets/templates/HEARTBEAT.template.md +58 -0
- package/assets/templates/README.md +65 -13
- package/assets/templates/SOUL-stub.template.md +1 -1
- package/assets/templates/template-material-didatico.html +457 -0
- package/assets/templates/template-report-executivo.html +368 -0
- package/assets/templates/template-report.html +370 -0
- package/package.json +1 -1
|
@@ -3,14 +3,61 @@ name: wizard-conectar
|
|
|
3
3
|
status: ATIVO
|
|
4
4
|
category: starter
|
|
5
5
|
owner: aluno
|
|
6
|
-
version:
|
|
6
|
+
version: 2.0
|
|
7
7
|
mode: guided
|
|
8
8
|
estimated_time: 12min (varia se chaves já existem)
|
|
9
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
|
|
10
|
+
description: Use when student types "conecta superpoderes" / "configura integrações" / "ativa tavily/brave/github", OR when dispatched by onboarding-checklist as passo 5. Configures Tavily Search API key (default desde kit v2.5.5 — designed pra agente IA, sem cartão obrigatório) OU Brave Search API key (alternativa legada) + GitHub Personal Access Token (classic) + (optional) Chromium via .env first pattern. **v2.0 (kit v2.5.5 — fix Brave Search free tier apertou): default Search API trocado de Brave → Tavily. Razão: Brave virou "cartão obrigatório + $5 créditos/mês" enquanto Tavily mantém 1.000 créditos/mês SEM cartão + foi feito specifically pra agente IA + 99.99% SLA + 1M+ devs adopters (AWS, IBM, MongoDB, BCG como clientes enterprise). Brave Search continua suportado como alternativa pra aluno que prefira (compat com kit v1.x-v2.5.4). Wizard pergunta default Tavily, aceita "brave" pra escolher fluxo legado. Plus known key OpenClaw: `TAVILY_API_KEY` precisa estar como known key no Hostinger Managed; se não estiver, fallback é SDK Python via shell export.** v1.9 (kit v2.5.3 — fix Allan VPS root + Chromium SingletonLock + silêncio 10min): (1) Novo ramo SingletonLock detecta erro literal `SingletonLock: Permission denied` + ambiente vps-root → executa sequência canônica (--no-sandbox attempt, snap remove chromium, apt install chromium-browser, gateway restart, validate). Caso comum em VPS root onde Chromium veio via Snap por default e AppArmor restringe acesso. Anti-loop: 2 tentativas máx — se falhar, fallback opcional (skip Chromium, marca `chromium=skipped` em MEMORY). (2) Regra UX EXPECTATIVA aplicada antes de invocar tool de install Chromium — mensagem canonical avisa que comando `apt install chromium-browser` pode levar 5-10min e que agente vai ficar bloqueado durante execução. Sem aviso, aluno acha que travou (caso Allan: 10min silêncio levou aluno a perguntar "ainda processando?").** v1.8 (kit v2.5.2 — fix Adrylan P14 violado em validações): header ganha bloco "P14 EXTRA-RÍGIDO" no topo com 3 mensagens obrigatórias em ordem (anúncio + comando → output literal → interpretação). Caso real Adrylan: bot anunciou "vou validar Brave" + "vou validar GitHub" + confirmou "validado" SEM mostrar comando nem output em 4 momentos (13:18, 13:57, 17:26, 17:30). v2.5.2 obriga: passo 2 (output) NUNCA pode ser pulado.** v1.7 (kit v2.5 — stress test Letícia round 2): Chromium passa a detectar `ambiente:` ANTES de afirmar "vem incluído". Em local-dev (Mac/Linux dev), Chromium não vem bundled — comando `openclaw browser status` falha. v2.5 adapta mensagem por ambiente (Managed/VPS root: bundled; local-dev: brew/apt manual; unknown: pergunta).** v1.6 (kit v2.4): (1) Brave 401 ramo dedicado — antes mensagem genérica "tenta de novo" tratava chave existente-mas-expirada igual a chave digitada errada; agora distingue (chave Brave de meses atrás é caso comum em VPS legados, requer regenerar, não re-colar); (2) PAT browser local — adicionada 1 frase antes do tutorial "abre seu navegador no laptop/desktop, não na máquina onde o agente roda" (caso Rodrigo VPS root SSH sem GUI).** v1.5: Brave URL homepage (`brave.com/pt-br/search/api/`) + cartão obrigatório no free tier. v1.4: PAT-only (sem `gh` CLI). v1.3: `conectado=partial` + flags individuais.
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
# Wizard Conectar — Passo 5 (
|
|
13
|
+
# Wizard Conectar — Passo 5 (Tavily Search + GitHub + Chromium · Brave como alternativa)
|
|
14
|
+
|
|
15
|
+
> 🔴 **AVISOS CRÍTICOS PRO AGENTE (v2.1, REFORÇADOS em v2.5.2):**
|
|
16
|
+
>
|
|
17
|
+
> ⚠️ **P14 EXTRA-RÍGIDO nesta skill (kit v2.5.2 — fix Adrylan):** validações de Brave + GitHub têm 4 momentos historicamente violados (caso Adrylan 13:18, 13:57, 17:26, 17:30 — bot anunciou "vou validar" + confirmou "validado" SEM mostrar comando nem output). REGRA: cada validação tem 3 mensagens em ordem:
|
|
18
|
+
>
|
|
19
|
+
> 1. **Anúncio + comando exato:** "Vou validar a chave Brave: `curl ...`"
|
|
20
|
+
> 2. **Output literal:** "Output: ```200```" (ou ```401```/etc)
|
|
21
|
+
> 3. **Interpretação SÓ DEPOIS:** "✓ HTTP 200 = chave válida" (ou erro específico)
|
|
22
|
+
>
|
|
23
|
+
> **NUNCA pular passo 2.** Se output não disponível (problema de tool/bridge), ABORTA + reporta honesto: "Não consegui rodar o comando — me mostra um print da chave funcionando OU rode manualmente e cola o output aqui." NÃO finja sucesso.
|
|
24
|
+
>
|
|
25
|
+
> Validações sob esta regra (todos os 4 anúncios do caso Adrylan):
|
|
26
|
+
> - Detecção `.env` Whisper (`grep -E "^OPENAI_API_KEY=" $WORKSPACE/.env`)
|
|
27
|
+
> - `openclaw exec-policy show` (em wizard-autonomia)
|
|
28
|
+
> - Validação Brave (`curl /res/v1/web/search?q=test`)
|
|
29
|
+
> - Validação GitHub PAT (`curl /user`)
|
|
30
|
+
>
|
|
31
|
+
> **1. URLs SEMPRE COMPLETOS + corretos por cenário (v1.5 fix Brave 03/05).** NUNCA mostrar URL truncada — gera 403/404 quando aluno clica direto. Sempre:
|
|
32
|
+
> - **Brave (criar conta + chave):** `https://brave.com/pt-br/search/api/` (homepage com "Get Started" — funciona pra aluno SEM conta)
|
|
33
|
+
> - **Brave (gerenciar chaves, depois de logado):** `https://api.search.brave.com/app/keys` (essa URL dá 403 pra aluno sem conta — usar SÓ depois do login)
|
|
34
|
+
> - GitHub PAT: `https://github.com/settings/tokens/new?scopes=repo&description=openclaw-backup` (completo, com query params pra pré-preencher)
|
|
35
|
+
> - GitHub signup (caso aluno não tenha conta): `https://github.com/signup`
|
|
36
|
+
>
|
|
37
|
+
> Falhas reais:
|
|
38
|
+
> - Dr. Thiago v1.9.2: aluno clicou Brave e deu 403 (URL `api.search.brave.com` requer login; v1.4 tinha essa URL como primária)
|
|
39
|
+
> - Bruno v2.2 conta nova: `https://api.search.brave.com/app/keys` deu 403 ("você não tem autorização"). Aluno teve que ir em `https://brave.com/pt-br/search/api/` manualmente pra criar conta. v1.5 corrige.
|
|
40
|
+
>
|
|
41
|
+
> **2. SMOKE TESTS VISÍVEIS (Princípio 14).** Toda chamada `curl` de validação:
|
|
42
|
+
> - MOSTRA o comando exato (em bloco de código) ANTES de rodar
|
|
43
|
+
> - MOSTRA o output literal (HTTP code + body se relevante) DEPOIS
|
|
44
|
+
> - Só DEPOIS interpretar/narrar
|
|
45
|
+
> - Se não conseguir rodar → ABORTA e pede ajuda. NUNCA fingir que validou.
|
|
46
|
+
>
|
|
47
|
+
> Falha real (Dr. Thiago, v1.9.2): outros wizards inventaram resultado de validação. Aqui você SEMPRE mostra evidência.
|
|
48
|
+
>
|
|
49
|
+
> **3. CAMINHO GITHUB É APENAS PAT CLASSIC** (decisão Bruno v2.1):
|
|
50
|
+
> - NÃO instalar `gh` CLI (não precisa)
|
|
51
|
+
> - NÃO chamar skill OpenClaw "github" (não existe pra todos)
|
|
52
|
+
> - NÃO ramificar por OS (Managed/VPS root usam o MESMO caminho aqui)
|
|
53
|
+
> - O agente usa `git` (built-in Linux/macOS) + GitHub API (curl + token) pra commits/push/repo create
|
|
54
|
+
> - Aluno cria conta (se não tem) → gera PAT classic com scope `repo` → cola → agente salva em `.env` como `GITHUB_TOKEN` → usa daí pra frente
|
|
55
|
+
>
|
|
56
|
+
> **4. GUARD RAIL (Princípio 13).** Se aluno desviar no meio do passo (ex: pergunta sobre Whisper, sobre outro tema), agente:
|
|
57
|
+
> - Anota a pergunta em `## Perguntas pendentes` em MEMORY.md
|
|
58
|
+
> - Responde 1 linha se for tangencial sobre o passo
|
|
59
|
+
> - Traz de volta: "Anotado, vou abordar depois. Mas pra fechar este passo, preciso que você {ação atual}"
|
|
60
|
+
> - Após 3 desvios consecutivos, oferece pausar (`wizard_resume_at` agendado)
|
|
14
61
|
|
|
15
62
|
## Promessa
|
|
16
63
|
|
|
@@ -56,7 +103,16 @@ Antes de pedir nada, lê `.env` e valida cada chave.
|
|
|
56
103
|
### Estado das 3 credenciais
|
|
57
104
|
|
|
58
105
|
```bash
|
|
59
|
-
#
|
|
106
|
+
# Tavily Search (default desde v2.5.5) — verifica primeiro
|
|
107
|
+
1. Lê TAVILY_API_KEY do .env
|
|
108
|
+
2. Se existe, valida:
|
|
109
|
+
curl -s -X POST "https://api.tavily.com/search" \
|
|
110
|
+
-H "Content-Type: application/json" \
|
|
111
|
+
-d "{\"api_key\":\"$TAVILY_API_KEY\",\"query\":\"test\",\"max_results\":1}" \
|
|
112
|
+
-o /dev/null -w "%{http_code}"
|
|
113
|
+
3. 200 = válida, 401 = inválida
|
|
114
|
+
|
|
115
|
+
# Brave Search (alternativa legada — verifica se Tavily não estiver presente)
|
|
60
116
|
1. Lê BRAVE_SEARCH_API_KEY do .env
|
|
61
117
|
2. Se existe, valida:
|
|
62
118
|
curl -s -H "X-Subscription-Token: $BRAVE_SEARCH_API_KEY" \
|
|
@@ -79,25 +135,27 @@ Antes de pedir nada, lê `.env` e valida cada chave.
|
|
|
79
135
|
|
|
80
136
|
### Estados detectáveis
|
|
81
137
|
|
|
82
|
-
|
|
|
138
|
+
| Search | GitHub | Chromium | Ação |
|
|
83
139
|
|---|---|---|---|
|
|
84
|
-
| ✓ válida | ✓ válido | ✓ instalado | "Tudo conectado já. Vou só ativar backup-workspace-github e ir pra pergunta-âncora." |
|
|
85
|
-
| ✓ | ✓ | ⏳ | "
|
|
86
|
-
| ✓ | ⏳ | qualquer | "
|
|
87
|
-
| ⏳ | ✓ | qualquer | "GitHub OK. Vou pedir só
|
|
140
|
+
| ✓ Tavily ou Brave válida | ✓ válido | ✓ instalado | "Tudo conectado já. Vou só ativar backup-workspace-github e ir pra pergunta-âncora." |
|
|
141
|
+
| ✓ | ✓ | ⏳ | "Search + GitHub OK. Chromium opcional, posso pular ou instalar agora — qual prefere?" |
|
|
142
|
+
| ✓ | ⏳ | qualquer | "Search OK. Vou pedir só GitHub Token." |
|
|
143
|
+
| ⏳ | ✓ | qualquer | "GitHub OK. Vou pedir só search key (Tavily recomendado)." |
|
|
88
144
|
| ⏳ | ⏳ | qualquer | Fluxo normal completo |
|
|
89
145
|
|
|
90
146
|
### Mensagem padrão ao detectar tudo pronto
|
|
91
147
|
|
|
92
148
|
```
|
|
93
149
|
"✓ Detectei suas integrações já configuradas:
|
|
94
|
-
-
|
|
150
|
+
- Search API ({Tavily | Brave Search} — validei agora, retornou 200)
|
|
95
151
|
- GitHub Token (validei — username: @{username})
|
|
96
152
|
- Chromium {se instalado}
|
|
97
153
|
|
|
98
154
|
Vou ativar o backup-workspace-github e seguir pra pergunta-âncora."
|
|
99
155
|
```
|
|
100
156
|
|
|
157
|
+
**Nota:** se aluno tem AMBAS configuradas (Tavily E Brave), agente prioriza Tavily (default v2.5.5+) e marca Brave como `search_legacy_active`. Aluno pode trocar manualmente depois com `troca search` (comando opcional, atalho pra desabilitar Tavily e voltar pra Brave).
|
|
158
|
+
|
|
101
159
|
## Fluxo principal
|
|
102
160
|
|
|
103
161
|
### 1. Narrar promessa
|
|
@@ -105,106 +163,292 @@ Vou ativar o backup-workspace-github e seguir pra pergunta-âncora."
|
|
|
105
163
|
```
|
|
106
164
|
"Vamos conectar 3 superpoderes externos. ~12min total.
|
|
107
165
|
|
|
108
|
-
1.
|
|
109
|
-
Free tier:
|
|
166
|
+
1. Tavily Search API → eu busco coisa na web (notícias, dados, refs).
|
|
167
|
+
Designed pra agentes IA. Free tier: 1.000 buscas/mês. Sem cartão.
|
|
110
168
|
|
|
111
169
|
2. GitHub Service Token → backup automático do seu workspace inteiro
|
|
112
170
|
pro GitHub privado. Cron diário às 03:00. 30 dias de histórico.
|
|
113
171
|
|
|
114
172
|
3. Chromium (opcional) → eu abro páginas web em headless quando preciso
|
|
115
173
|
ler conteúdo (artigo, doc, página inteira). Sem isso, eu vejo só
|
|
116
|
-
título + descrição
|
|
174
|
+
título + descrição da busca.
|
|
117
175
|
|
|
118
176
|
Sem essas 3, eu fico isolada — não busco web, não salvo histórico,
|
|
119
177
|
não leio página completa.
|
|
120
178
|
|
|
121
|
-
Bora começar pelo
|
|
179
|
+
Bora começar pelo Tavily?"
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### 2. Tavily Search — gerar e validar chave (default desde kit v2.5.5)
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
"Pra gerar Tavily Search API key:
|
|
186
|
+
|
|
187
|
+
1. Abre https://tavily.com/
|
|
188
|
+
2. Clica em 'Get API Key' / 'Sign up'
|
|
189
|
+
3. Faz cadastro: email + senha (sem cartão de crédito)
|
|
190
|
+
4. Confirma email
|
|
191
|
+
5. Acessa o dashboard → 'API Keys' → copia a chave (formato: tvly-XXXXXXXXX...)
|
|
192
|
+
|
|
193
|
+
Plano Free Researcher: 1.000 créditos/mês renováveis. Suficiente pra
|
|
194
|
+
agente PME usar buscas todo dia. Quando estourar, plano Pay As You Go
|
|
195
|
+
fica $0.008/crédito (= $8/1.000 buscas adicionais). Sem cartão exigido
|
|
196
|
+
no plano free.
|
|
197
|
+
|
|
198
|
+
Se quiser conhecer mais antes: https://tavily.com/pricing
|
|
199
|
+
|
|
200
|
+
Quando tiver a chave, cola aqui que eu salvo no .env e valido."
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Validação Tavily (smoke test visível — Princípio 14):**
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# 1. Salvar a chave (known key OpenClaw — TAVILY_API_KEY)
|
|
207
|
+
openclaw secrets set TAVILY_API_KEY tvly-XXXXXXXXX
|
|
208
|
+
openclaw secrets reload
|
|
209
|
+
|
|
210
|
+
# 2. Validar com call real (mostrar comando + output literal)
|
|
211
|
+
curl -s -X POST "https://api.tavily.com/search" \
|
|
212
|
+
-H "Content-Type: application/json" \
|
|
213
|
+
-d "{\"api_key\":\"$TAVILY_API_KEY\",\"query\":\"test\",\"max_results\":1}" \
|
|
214
|
+
-w "\nHTTP %{http_code}\n"
|
|
215
|
+
|
|
216
|
+
# 3. 200 OK = válida · 401 = inválida · 429 = rate limit
|
|
122
217
|
```
|
|
123
218
|
|
|
124
|
-
|
|
219
|
+
> ⚠️ **Atenção known key OpenClaw:** se `TAVILY_API_KEY` ainda NÃO estiver na allow-list de known keys do Hostinger Managed (verificar com `openclaw secrets list` após o reload), a chave NÃO vai ficar acessível pro agente nativo. Workaround: configurar via `export TAVILY_API_KEY=...` no shell + agente usa SDK Python (`pip install tavily-python`) em vez do daemon nativo. Esse caminho é mais flexível e independe da Hostinger atualizar known keys.
|
|
220
|
+
|
|
221
|
+
### 2b. Brave Search — alternativa (mantém compat com kit v1.x-v2.5.4)
|
|
222
|
+
|
|
223
|
+
Se aluno preferir Brave (já tem conta, prefere o ecosystem Brave, etc), wizard aceita:
|
|
125
224
|
|
|
126
225
|
```
|
|
127
|
-
"
|
|
226
|
+
"Beleza, vamos com Brave Search (alternativa). 2 coisas a saber antes:
|
|
128
227
|
|
|
129
|
-
1.
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
5. Nome sugerido: 'openclaw-{nome_agente}' (ex: 'openclaw-atlas')
|
|
134
|
-
6. Copia a chave (começa com 'BSAk...')
|
|
135
|
-
7. Cola aqui
|
|
228
|
+
1. Brave exige cartão de crédito pra ativar plano Free ($5 créditos/mês = ~1.000 buscas).
|
|
229
|
+
Não cobra dentro do free tier — cartão é só anti-fraude.
|
|
230
|
+
2. Tavily não exige cartão e tem o mesmo free tier (1k/mês).
|
|
231
|
+
Recomendamos como default em v2.5.5+, mas Brave continua suportado.
|
|
136
232
|
|
|
137
|
-
|
|
233
|
+
Confirma que quer Brave mesmo? Manda 'brave' que eu sigo, 'tavily' que
|
|
234
|
+
eu volto pro caminho default."
|
|
138
235
|
```
|
|
139
236
|
|
|
140
|
-
|
|
237
|
+
**Se aluno confirma Brave, fluxo legado:**
|
|
238
|
+
|
|
239
|
+
1. Abre https://brave.com/pt-br/search/api/ (homepage da API)
|
|
240
|
+
2. Clica em 'Get Started' / 'Começar agora'
|
|
241
|
+
3. Faz cadastro: email + senha
|
|
242
|
+
4. **⚠️ Heads up: Brave vai pedir cartão de crédito pra ativar o plano Free.** Não cobra nada se você ficar dentro do free tier (~1k queries/mês). Cartão é só pra prevenir abuso/bots. Se preferir não cadastrar agora, manda 'pula' — você pode ativar quando quiser.
|
|
243
|
+
5. Após cadastro completo, vai pra https://api.search.brave.com/app/keys (essa URL agora vai funcionar pra você porque tá logado)
|
|
244
|
+
6. Clica 'Add API Key'
|
|
245
|
+
7. Nome sugerido: 'openclaw-{nome_agente}' (ex: 'openclaw-atlas')
|
|
246
|
+
8. Copia a chave (começa com 'BSAk...')
|
|
247
|
+
9. Cola aqui
|
|
248
|
+
|
|
249
|
+
Resumo: free tier não cobra, mas precisa cartão no cadastro. Renova mensalmente."
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Quando aluno colar a chave, **smoke test visível (Princípio 14)** — mostra comando + output literal:
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
"Validando a chave Brave agora:
|
|
141
256
|
|
|
142
257
|
```bash
|
|
143
|
-
curl -s -
|
|
144
|
-
"
|
|
145
|
-
|
|
258
|
+
curl -s -o /dev/null -w "%{http_code}" \
|
|
259
|
+
-H "X-Subscription-Token: BSAk-xxxx" \
|
|
260
|
+
"https://api.search.brave.com/res/v1/web/search?q=hello"
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Output:
|
|
264
|
+
```
|
|
265
|
+
200
|
|
146
266
|
```
|
|
147
267
|
|
|
268
|
+
✓ HTTP 200 = chave válida."
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
(NÃO inventar HTTP code. Se não conseguir rodar curl, abortar e pedir ajuda.)
|
|
272
|
+
|
|
148
273
|
| Resposta | Ação |
|
|
149
274
|
|---|---|
|
|
150
275
|
| 200 | "✓ Brave validada. Vou salvar." |
|
|
151
|
-
| 401 | "Erro 401
|
|
152
|
-
|
|
|
153
|
-
|
|
|
276
|
+
| 401 (chave que aluno acabou de colar) | "Erro 401 — chave inválida. Copy/paste truncado? Tenta de novo." → volta pro passo 1 |
|
|
277
|
+
| 401 (chave já existia em `.env` antes — kit v2.4 ramo dedicado) | Ramo "chave expirada/revogada" abaixo |
|
|
278
|
+
| 429 | "Rate limit já. Você gerou e logo passou da quota? Tenta de novo em 1min." |
|
|
279
|
+
| Outros | Mostrar output literal + investigar com aluno |
|
|
280
|
+
|
|
281
|
+
#### Ramo: Brave 401 com chave PRÉ-EXISTENTE (kit v2.4 — fix Rodrigo)
|
|
282
|
+
|
|
283
|
+
⚠️ **Distinção importante:** se a Detecção do Princípio 11 já tinha encontrado `BRAVE_SEARCH_API_KEY` no `.env` ANTES desse fluxo (chave de meses atrás), e a validação inicial retornou 401, **não tratar como copy/paste errado** — chave realmente existia, foi revogada/expirada (Brave revogou 03/2026, comum em VPS legados).
|
|
284
|
+
|
|
285
|
+
Mensagem canonical (P15):
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
"Achei sua chave Brave já no `.env` (provavelmente configurada antes), mas a validação retornou **HTTP 401**:
|
|
289
|
+
|
|
290
|
+
```
|
|
291
|
+
{output_literal}
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
Isso significa: a chave foi **revogada ou expirou**. Não é erro de digitação — a chave existia, mas perdeu validade.
|
|
295
|
+
|
|
296
|
+
Próximo passo:
|
|
297
|
+
|
|
298
|
+
1. Abre **https://api.search.brave.com/app/keys** (você já tem login lá — chave antiga indica isso)
|
|
299
|
+
2. **Revoga** a chave antiga (botão Revoke ao lado dela)
|
|
300
|
+
3. **Add API Key** → nome: `openclaw-{nome_agente}` → copia a nova
|
|
301
|
+
4. Cola aqui que eu sobrescrevo o `.env`
|
|
302
|
+
|
|
303
|
+
Se você não conseguir acessar o painel (perdeu senha, etc), usa o caminho de criar do zero: https://brave.com/pt-br/search/api/"
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
(NÃO ficar perguntando "tenta de novo" — Rodrigo vai colar a mesma chave revogada em loop. P14 manda mostrar evidência e explicar root cause.)
|
|
154
307
|
|
|
155
308
|
Salvar como `BRAVE_SEARCH_API_KEY` no `.env` (após backup do `.env` se já existia — Princípio 1).
|
|
156
309
|
|
|
157
310
|
### 3. GitHub Personal Access Token (classic) — gerar e validar
|
|
158
311
|
|
|
312
|
+
⚠️ **Antes de pedir o token, perguntar:** "Você já tem conta GitHub?" Se aluno disser "não" / "preciso criar" / "nunca usei", vai pra **3a (criar conta)**. Se sim, vai pra **3b (gerar token)**.
|
|
313
|
+
|
|
314
|
+
#### 3a. Criar conta GitHub (caso aluno não tenha)
|
|
315
|
+
|
|
159
316
|
```
|
|
160
|
-
"
|
|
317
|
+
"Beleza, vamos criar sua conta GitHub primeiro. É grátis e leva ~2min.
|
|
161
318
|
|
|
162
|
-
1. Acessa https://github.com/
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
319
|
+
1. Acessa https://github.com/signup
|
|
320
|
+
2. Email pessoal (ou de trabalho) + senha forte + username
|
|
321
|
+
- Username vai aparecer em URLs públicas — escolhe algo profissional.
|
|
322
|
+
Ex: 'thiago-russo' melhor que 'tagueitiago42'
|
|
323
|
+
3. Verifica email (eles mandam código)
|
|
324
|
+
4. Plano 'Free' já vem ativo
|
|
167
325
|
|
|
168
|
-
|
|
169
|
-
|
|
326
|
+
Quando criar, manda 'criei' que a gente vai pro próximo passo (gerar
|
|
327
|
+
token)."
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
Aguardar aluno confirmar. Quando confirmar, vai pra 3b.
|
|
170
331
|
|
|
171
|
-
|
|
172
|
-
(ex: 'openclaw-backup-atlas')
|
|
332
|
+
#### 3b. Gerar PAT classic — tutorial visual em 4 cliques
|
|
173
333
|
|
|
174
|
-
4.
|
|
334
|
+
⚠️ **Antes de tudo (kit v2.4 — fix Rodrigo VPS root):** o tutorial abaixo é executado **no SEU navegador** (Chrome/Safari/Firefox no seu laptop/celular) — NÃO na máquina onde o agente roda. Se você tá em VPS root via SSH (ou só não tem GUI na máquina do agente), abre o navegador no SEU computador/celular e segue os passos lá. Quando copiar o token gerado, vem aqui pro Telegram e cola — eu salvo.
|
|
175
335
|
|
|
176
|
-
|
|
177
|
-
☑ repo (Full control of private repositories)
|
|
336
|
+
⚠️ **Agente: tem 2 caminhos pro aluno (oferecer link direto primeiro, fallback manual com screenshots):**
|
|
178
337
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
338
|
+
**Caminho A — Link direto (mais rápido):**
|
|
339
|
+
|
|
340
|
+
```
|
|
341
|
+
"Agora gera o Personal Access Token. Tem 2 jeitos:
|
|
182
342
|
|
|
183
|
-
|
|
343
|
+
🔗 **JEITO RÁPIDO** (link direto já com scope 'repo' pré-marcado):
|
|
344
|
+
https://github.com/settings/tokens/new?scopes=repo&description=openclaw-backup
|
|
345
|
+
|
|
346
|
+
Esse link abre a página de criação já configurada — você só precisa
|
|
347
|
+
escolher 'No expiration' e clicar 'Generate token' no fim.
|
|
348
|
+
|
|
349
|
+
Se o link não funcionar (raro), me responde 'manual' que eu te guio
|
|
350
|
+
pelos 4 cliques no painel."
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
**Caminho B — Manual em 4 cliques (com screenshots):**
|
|
354
|
+
|
|
355
|
+
⚠️ **Agente: ao apresentar o caminho manual, anexar os 4 screenshots na ordem.** Cada passo tem 1 imagem em `screenshots/github-pat/`. Se a bridge Telegram não suportar `sendPhoto`, mandar links raw GitHub como fallback (já incluídos no texto).
|
|
356
|
+
|
|
357
|
+
```
|
|
358
|
+
"Beleza, vou te guiar passo a passo:
|
|
184
359
|
|
|
185
|
-
|
|
360
|
+
📷 **Clique 1** — abre o menu do seu avatar (canto superior direito)
|
|
361
|
+
→ clica em **Settings**
|
|
362
|
+
[foto: 01-avatar-settings.png anexada]
|
|
186
363
|
|
|
187
|
-
|
|
188
|
-
|
|
364
|
+
📷 **Clique 2** — na página Settings, sidebar esquerdo (no FIM da lista,
|
|
365
|
+
no rodapé) → **Developer settings**
|
|
366
|
+
[foto: 02-developer-settings.png anexada]
|
|
189
367
|
|
|
190
|
-
|
|
368
|
+
📷 **Clique 3** — no sidebar de Developer settings → **Personal access
|
|
369
|
+
tokens** → **Tokens (classic)** (NÃO 'Fine-grained tokens')
|
|
370
|
+
→ no canto superior direito: botão **Generate new token**
|
|
371
|
+
[foto: 03-tokens-classic.png anexada]
|
|
372
|
+
|
|
373
|
+
📷 **Clique 4** — no dropdown que abre, escolhe a 2ª opção:
|
|
374
|
+
**Generate new token (classic)** (For general use)
|
|
375
|
+
⚠️ NÃO clica na 1ª (Fine-grained, repo-scoped) — a versão 'classic'
|
|
376
|
+
é a que precisamos
|
|
377
|
+
[foto: 04-generate-classic.png anexada]
|
|
378
|
+
|
|
379
|
+
Configurações na próxima tela:
|
|
380
|
+
☑ Note: openclaw-backup
|
|
381
|
+
☑ Expiration: 'No expiration' (ou 1 ano se quiser rotacionar depois)
|
|
382
|
+
☑ Scopes: SÓ 'repo' (Full control of private repositories)
|
|
383
|
+
⚠️ NÃO marca admin:* nem nada além de 'repo'. Princípio do menor
|
|
384
|
+
privilégio: token só precisa criar/modificar repos pra backup.
|
|
385
|
+
|
|
386
|
+
Clica 'Generate token' no fim da página.
|
|
387
|
+
|
|
388
|
+
⚠️ Atenção: o token só é mostrado UMA vez. Fechou janela = gerar outro.
|
|
389
|
+
|
|
390
|
+
Copia o token (começa com 'ghp_...') e cola aqui.
|
|
391
|
+
|
|
392
|
+
Antes de colar: confirma que esse chat é só seu (não é grupo).
|
|
191
393
|
Token em chat público = vazado."
|
|
192
394
|
```
|
|
193
395
|
|
|
194
|
-
|
|
396
|
+
**Fallback de links raw (caso bridge Telegram não anexe imagens):**
|
|
397
|
+
|
|
398
|
+
```
|
|
399
|
+
Se as fotos não chegaram, são esses 4 links:
|
|
400
|
+
1. https://raw.githubusercontent.com/okjpg/repo-amora-cos/main/memory/curso-openclaw-v2/starter-kit/skills/starter/wizard-conectar/screenshots/github-pat/01-avatar-settings.png
|
|
401
|
+
2. https://raw.githubusercontent.com/okjpg/repo-amora-cos/main/memory/curso-openclaw-v2/starter-kit/skills/starter/wizard-conectar/screenshots/github-pat/02-developer-settings.png
|
|
402
|
+
3. https://raw.githubusercontent.com/okjpg/repo-amora-cos/main/memory/curso-openclaw-v2/starter-kit/skills/starter/wizard-conectar/screenshots/github-pat/03-tokens-classic.png
|
|
403
|
+
4. https://raw.githubusercontent.com/okjpg/repo-amora-cos/main/memory/curso-openclaw-v2/starter-kit/skills/starter/wizard-conectar/screenshots/github-pat/04-generate-classic.png
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
#### 3c. Validar (smoke test visível — Princípio 14)
|
|
407
|
+
|
|
408
|
+
⚠️ Quando aluno colar o token, MOSTRAR o comando + output literal:
|
|
409
|
+
|
|
410
|
+
```
|
|
411
|
+
"Validando o token agora:
|
|
412
|
+
|
|
413
|
+
```bash
|
|
414
|
+
curl -s -o /dev/null -w "%{http_code}" \
|
|
415
|
+
-H "Authorization: token ghp_xxxx" \
|
|
416
|
+
https://api.github.com/user
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
Output:
|
|
420
|
+
```
|
|
421
|
+
200
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
✓ HTTP 200 = token válido."
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
(Mostrar HTTP code real recebido. NÃO inventar.)
|
|
428
|
+
|
|
429
|
+
Após validação OK, extrair username:
|
|
195
430
|
|
|
196
431
|
```bash
|
|
197
432
|
curl -s -H "Authorization: token {token}" \
|
|
198
|
-
https://api.github.com/user -
|
|
433
|
+
https://api.github.com/user | jq -r '.login'
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
Mostrar resultado:
|
|
437
|
+
|
|
438
|
+
```
|
|
439
|
+
"Você é @{username}. Anotado.
|
|
440
|
+
|
|
441
|
+
Salvando como GITHUB_TOKEN no .env."
|
|
199
442
|
```
|
|
200
443
|
|
|
201
444
|
| Resposta | Ação |
|
|
202
445
|
|---|---|
|
|
203
|
-
| 200 |
|
|
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." |
|
|
446
|
+
| 200 | "✓ Validado. Você é @{username}." → salva |
|
|
447
|
+
| 401 | "Token inválido (HTTP 401). Copia/cola pode ter cortado o final, ou token expirou. Tenta de novo gerando outro." → volta pra 3b |
|
|
448
|
+
| 403 | "Token sem scope 'repo' (HTTP 403). Volta no GitHub e marca o scope, gera de novo." → volta pra 3b |
|
|
449
|
+
| Outro | Mostrar o output literal + investigar com aluno |
|
|
206
450
|
|
|
207
|
-
Salvar como `GITHUB_TOKEN` no `.env`.
|
|
451
|
+
Salvar como `GITHUB_TOKEN` no `.env` (após backup do `.env` se já existia — Princípio 1).
|
|
208
452
|
|
|
209
453
|
### 4. Chromium — opcional
|
|
210
454
|
|
|
@@ -224,24 +468,76 @@ Manda 'instala' ou 'pula'."
|
|
|
224
468
|
|
|
225
469
|
Se "instala":
|
|
226
470
|
|
|
471
|
+
⚠️ **kit v2.5 — fix Letícia stress test:** detectar ambiente ANTES de afirmar "vem incluído". Em local-dev (Mac/Linux dev), Chromium não vem bundled — comando `openclaw browser status` falha. Mensagem deve adaptar.
|
|
472
|
+
|
|
473
|
+
**Lê `ambiente:` em MEMORY:**
|
|
474
|
+
|
|
475
|
+
| Ambiente | Mensagem + comando |
|
|
476
|
+
|---|---|
|
|
477
|
+
| `managed` | "Boa notícia: o Chromium já vem incluído no seu OpenClaw Managed. Não precisa instalar nada. Vou validar." → `openclaw browser status` |
|
|
478
|
+
| `vps-root` | "Em VPS root, o OpenClaw bundle inclui Chromium. Vou validar." → `openclaw browser status` |
|
|
479
|
+
| `local-dev` | "Em dev local, Chromium não vem bundled — você precisa instalar manualmente. Mac (brew): `brew install chromium`. Linux: `apt install chromium-browser` ou similar. Manda 'instalado' quando finalizar OU manda 'pula' se não quiser agora." (NÃO roda `openclaw browser status` — comando provavelmente falha) |
|
|
480
|
+
| `unknown` | "Não consegui detectar seu ambiente automaticamente. Você instalou OpenClaw via 1-click Hostinger (Managed), via SSH no VPS, ou local no seu computador?" → conforme resposta, redireciona |
|
|
481
|
+
|
|
482
|
+
**Após `openclaw browser status` (Managed/VPS root):**
|
|
483
|
+
|
|
484
|
+
| Resultado | Ação |
|
|
485
|
+
|---|---|
|
|
486
|
+
| `running` ou `available` | "✓ Browser disponível. Marcando como ativo." |
|
|
487
|
+
| `not started` ou similar | Ativar com `openclaw browser start --headless` (rodar via execução de tool, não pedir aluno colar) |
|
|
488
|
+
| **`SingletonLock: Permission denied`** (kit v2.5.3 — fix Allan VPS root + Snap) | Ramo dedicado SingletonLock — ver seção abaixo |
|
|
489
|
+
| Erro inesperado | "Hm, browser não tá respondendo. Manda no @cursoopenclaw que ajudo a debugar — não bloqueia o resto da jornada." |
|
|
490
|
+
|
|
491
|
+
#### Ramo SingletonLock (kit v2.5.3 — fix Allan)
|
|
492
|
+
|
|
493
|
+
⚠️ **Caso real Allan stress test 03/05/2026 18:43-18:55:** Chromium em VPS root via Snap retornou `SingletonLock: Permission denied`. Snap-based Chromium é incompatível com containers root (profile lock falha). Solução: trocar pra executável fora do Snap.
|
|
494
|
+
|
|
495
|
+
**Detecção:** se output de `openclaw browser status` ou primeira tentativa de start contém `SingletonLock` E ambiente é `vps-root`.
|
|
496
|
+
|
|
497
|
+
**Antes de invocar tool de instalação (P14 + Regra UX EXPECTATIVA — kit v2.5.3):**
|
|
498
|
+
|
|
227
499
|
```
|
|
228
|
-
"
|
|
229
|
-
|
|
500
|
+
"Detectei Chromium via Snap incompatível com root (erro de profile lock — `SingletonLock: Permission denied`). É edge case conhecido em containers VPS com Snap.
|
|
501
|
+
|
|
502
|
+
Vou tentar reinstalar fora do Snap (via apt direto). Esse processo:
|
|
503
|
+
- Configura `browser.noSandbox: true` (necessário pra root)
|
|
504
|
+
- Remove Chromium-Snap atual
|
|
505
|
+
- Instala chromium-browser via apt
|
|
506
|
+
- Restart Gateway pra apontar pro novo executável
|
|
230
507
|
|
|
231
|
-
Vou
|
|
508
|
+
Leva 5-10min total (apt install em VPS Hostinger costuma ser lento). Vou ficar bloqueado durante a execução, não consigo mandar update no meio — se passar de 12min sem retorno, me avisa pra eu confirmar que não travei."
|
|
232
509
|
```
|
|
233
510
|
|
|
234
|
-
|
|
511
|
+
**Comandos (P14 — mostrar comando + output após retornar):**
|
|
235
512
|
|
|
236
513
|
```bash
|
|
514
|
+
# 1. Configurar noSandbox
|
|
515
|
+
openclaw config set browser.noSandbox true
|
|
516
|
+
|
|
517
|
+
# 2. Remover Snap (se existir)
|
|
518
|
+
snap remove chromium 2>/dev/null || true
|
|
519
|
+
|
|
520
|
+
# 3. Instalar via apt (Debian/Ubuntu) ou yum (RHEL)
|
|
521
|
+
apt-get install -y chromium-browser 2>/dev/null || yum install -y chromium
|
|
522
|
+
|
|
523
|
+
# 4. Restart Gateway
|
|
524
|
+
openclaw gateway restart
|
|
525
|
+
|
|
526
|
+
# 5. Validar
|
|
527
|
+
sleep 5 # aguarda Gateway estabilizar
|
|
237
528
|
openclaw browser status
|
|
238
529
|
```
|
|
239
530
|
|
|
240
|
-
|
|
531
|
+
**Output após retorno:**
|
|
532
|
+
|
|
533
|
+
| Status | Ação |
|
|
241
534
|
|---|---|
|
|
242
|
-
| `running` ou `available` | "✓
|
|
243
|
-
|
|
|
244
|
-
|
|
535
|
+
| `running` ou `available` | "✓ Chromium reinstalado fora do Snap, Gateway estabilizado, browser disponível. Marcando como ativo." |
|
|
536
|
+
| Ainda `SingletonLock` ou outro erro | Fallback: "Não consegui ativar Chromium aqui — Snap+root é tricky. Marcado como skipped — você pode reativar depois com 'ativa browser' (vai precisar instalar Chromium manual via `apt install chromium-browser` ou similar). Bora seguir o passo? Brave Search e GitHub funcionam sem Chromium — você só perde leitura de página completa (Brave dá título+descrição, suficiente em 70% dos casos)." |
|
|
537
|
+
|
|
538
|
+
**Limite anti-loop:** se 2 tentativas de fix falharem (SingletonLock persiste), aplicar fallback skipped diretamente. Não tentar terceira vez.
|
|
539
|
+
|
|
540
|
+
**Após instalação manual (local-dev):** se aluno mandar "instalado", validar via `which chromium` ou `which chromium-browser`. Se OK, marca `chromium_active=true`. Se não encontrar, "Não encontrei `chromium` nem `chromium-browser` no PATH. Você instalou onde? Se preferir, manda 'pula' e ativa depois."
|
|
245
541
|
|
|
246
542
|
Se "pula": marca `chromium_active=false` em `MEMORY.md`. Aluno pode ativar depois com 'ativa browser'.
|
|
247
543
|
|
|
@@ -265,6 +561,10 @@ Se sim: invoca skill `backup-workspace-github` (passa `GITHUB_TOKEN` pro escopo
|
|
|
265
561
|
|
|
266
562
|
Se aluno disser "não, depois": marca `backup_disabled=true` em `MEMORY.md`. Aluno reativa com "ativa backup".
|
|
267
563
|
|
|
564
|
+
⚠️ **CRÍTICO — não falsifique sucesso:** se aluno pulou Brave OU pulou GitHub OU desabilitou backup, **NÃO marque `conectado=true` no final do passo**. Use `conectado=partial` + flags individuais (`brave_search_active`, `github_token_active`, `backup_active`, `chromium_active`) refletindo o que REALMENTE foi feito. A skill `primeira-vitoria` (passo 6) verifica essas flags antes de oferecer pós-vitória — se algo crítico ficou pendente (ex: backup que aluno disse "depois"), ela vai voltar pra completar em vez de tratar como opcional.
|
|
565
|
+
|
|
566
|
+
Falha real observada (sessão Lia/Mira 02/05): aluno disse "Roda aí" sobre Brave mas wizard pulou pra primeira vitória sem configurar nada e marcou passo 5 ✓. Backup nunca foi ativado mas apareceu como "opção pós-vitória" depois — confundiu o fluxo. Não repetir.
|
|
567
|
+
|
|
268
568
|
### 6. Confirmação final ao aluno
|
|
269
569
|
|
|
270
570
|
```
|
|
@@ -301,7 +601,7 @@ Fechar com:
|
|
|
301
601
|
|
|
302
602
|
```
|
|
303
603
|
"Se quer aprofundar gestão de credenciais (1Password, rotação de
|
|
304
|
-
chaves, vault), a aula é a
|
|
604
|
+
chaves, vault), a aula é a Aula 10 (Instalando 1password) — manda 'aula 10'.
|
|
305
605
|
|
|
306
606
|
E se ficou alguma dúvida que eu não cobri, dois caminhos no grupo:
|
|
307
607
|
- resposta rápida 24/7: chama @Openclawzinho (bot IA) no tópico Suporte
|
|
@@ -313,18 +613,26 @@ Marquei o passo 5 como feito. Bora pro passo 6 — sua primeira vitória?"
|
|
|
313
613
|
|
|
314
614
|
### 8. Atualizar MEMORY.md
|
|
315
615
|
|
|
616
|
+
**Regra:** `conectado` reflete o estado REAL. Use `true` SÓ se TODOS os 3 essenciais (Brave + GitHub + backup) foram configurados com sucesso. Caso contrário, `partial` + flags individuais.
|
|
617
|
+
|
|
316
618
|
```markdown
|
|
317
619
|
## Flags
|
|
318
|
-
conectado: true
|
|
319
|
-
brave_search_active: true
|
|
320
|
-
github_token_active: true
|
|
321
|
-
|
|
322
|
-
|
|
620
|
+
conectado: {true | partial | false}
|
|
621
|
+
brave_search_active: {true | false | skipped}
|
|
622
|
+
github_token_active: {true | false | skipped}
|
|
623
|
+
backup_active: {true | false | postponed}
|
|
624
|
+
chromium_active: {true | false | skipped}
|
|
323
625
|
|
|
324
626
|
## Decisões da jornada
|
|
325
|
-
- {data}: Conectou Brave
|
|
627
|
+
- {data}: Conectou {N de 4} superpoderes. {Brave: ✓/skip} | {GitHub: ✓/skip} | {Backup: ✓/postponed} | {Chromium: ✓/skip}.
|
|
326
628
|
```
|
|
327
629
|
|
|
630
|
+
**Exemplos do que `conectado` deve ser:**
|
|
631
|
+
- Brave ✓ + GitHub ✓ + backup ✓ + Chromium ✓ → `conectado: true`
|
|
632
|
+
- Brave ✓ + GitHub ✓ + backup ✓ + Chromium skipped → `conectado: true` (Chromium é opcional)
|
|
633
|
+
- Brave ✓ + GitHub ✓ + backup postponed → `conectado: partial` (primeira-vitoria vai voltar pra completar backup)
|
|
634
|
+
- Brave skipped + GitHub skipped → `conectado: false` (passo 5 efetivamente não rodou)
|
|
635
|
+
|
|
328
636
|
Atualizar `onboarding_current_step: 6`.
|
|
329
637
|
|
|
330
638
|
### 9. Devolver controle pra onboarding-checklist
|
|
@@ -366,7 +674,7 @@ Marca `github_token_active=false`, `backup_active=false`. Devolve controle.
|
|
|
366
674
|
- **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
675
|
- **Aluno tem 2FA no GitHub e tenta usar password:** explicar que Service Token substitui password pra API (não usa password mesmo).
|
|
368
676
|
- **`.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
|
|
677
|
+
- **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 12. Por enquanto: Brave + GitHub cobre 80%."
|
|
370
678
|
|
|
371
679
|
## Aplicação dos princípios defensivos
|
|
372
680
|
|
|
Binary file
|
package/assets/skills/starter/wizard-conectar/screenshots/github-pat/02-developer-settings.png
ADDED
|
Binary file
|
|
Binary file
|