@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,196 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "wizard-conectar",
|
|
3
|
+
"version": "1.0",
|
|
4
|
+
"description": "4 cenários cobrindo: caminho completo, parcial (Brave já existe), aluno só quer Brave, .env já commitado por engano",
|
|
5
|
+
"scenarios": [
|
|
6
|
+
{
|
|
7
|
+
"id": "caminho-completo",
|
|
8
|
+
"name": "Aluno conecta as 3 integrações",
|
|
9
|
+
"description": "Estado limpo. Aluno gera Brave + GitHub, instala Chromium, ativa backup.",
|
|
10
|
+
"setup": {
|
|
11
|
+
"env_state": ".env só com OPENAI_API_KEY",
|
|
12
|
+
"memory_flags": {
|
|
13
|
+
"autonomia_liberada": true,
|
|
14
|
+
"workspace_organizado": true,
|
|
15
|
+
"onboarding_current_step": 5
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"interaction_flow": [
|
|
19
|
+
{
|
|
20
|
+
"user": "[despachado]",
|
|
21
|
+
"expected_agent_behavior": [
|
|
22
|
+
"checa autonomia_liberada=true (ok)",
|
|
23
|
+
"Princípio 11 — lê .env, detecta Brave/GitHub ausentes",
|
|
24
|
+
"narra promessa (Brave + GitHub + Chromium opcional)",
|
|
25
|
+
"começa por Brave"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"user": "BSAkXXXXXXXX",
|
|
30
|
+
"expected_agent_behavior": [
|
|
31
|
+
"valida via curl Brave Search API (200)",
|
|
32
|
+
"backup do .env (Princípio 1)",
|
|
33
|
+
"salva BRAVE_SEARCH_API_KEY",
|
|
34
|
+
"passa pra GitHub Token"
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"user": "ghp_XXXXXXXX",
|
|
39
|
+
"expected_agent_behavior": [
|
|
40
|
+
"valida via curl GitHub user API (200)",
|
|
41
|
+
"extrai username",
|
|
42
|
+
"salva GITHUB_TOKEN",
|
|
43
|
+
"pergunta sobre Chromium"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"user": "instala",
|
|
48
|
+
"expected_agent_behavior": [
|
|
49
|
+
"explica que browser já vem incluído no Managed (não precisa instalar)",
|
|
50
|
+
"valida com openclaw browser status",
|
|
51
|
+
"confirma disponível"
|
|
52
|
+
],
|
|
53
|
+
"must_not": [
|
|
54
|
+
"inventar comando 'openclaw browser install chromium' (não existe)",
|
|
55
|
+
"pedir aluno colar comando no terminal (não há comando pra colar)"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"user": "[browser disponível confirmado]",
|
|
60
|
+
"expected_agent_behavior": [
|
|
61
|
+
"ativa backup-workspace-github (despacha skill)",
|
|
62
|
+
"espera skill terminar",
|
|
63
|
+
"confirma 4 conectados",
|
|
64
|
+
"pergunta-âncora"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"user": "revogo a chave e gero nova",
|
|
69
|
+
"expected_agent_behavior": [
|
|
70
|
+
"valida resposta",
|
|
71
|
+
"menciona aula D2",
|
|
72
|
+
"marca conectado=true, brave/github/chromium/backup todos true",
|
|
73
|
+
"atualiza onboarding_current_step=6"
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"success_criteria": [
|
|
78
|
+
"BRAVE_SEARCH_API_KEY + GITHUB_TOKEN no .env validados",
|
|
79
|
+
"Chromium instalado",
|
|
80
|
+
"backup-workspace-github ativo (cron criado, push feito)",
|
|
81
|
+
"conectado=true",
|
|
82
|
+
"onboarding_current_step=6",
|
|
83
|
+
".env no .gitignore"
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "parcial-brave-ja-existe",
|
|
88
|
+
"name": "Aluno já tem BRAVE_SEARCH_API_KEY no .env",
|
|
89
|
+
"description": "Princípio 11 detecta e pula pedido de Brave. Pede só GitHub.",
|
|
90
|
+
"setup": {
|
|
91
|
+
"env_state": ".env tem BRAVE_SEARCH_API_KEY válida (testada)",
|
|
92
|
+
"memory_flags": {
|
|
93
|
+
"autonomia_liberada": true
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"interaction_flow": [
|
|
97
|
+
{
|
|
98
|
+
"user": "[despachado]",
|
|
99
|
+
"expected_agent_behavior": [
|
|
100
|
+
"lê .env, acha Brave + valida",
|
|
101
|
+
"narra '✓ Achei Brave já configurada, validei, OK'",
|
|
102
|
+
"pula direto pra pedido de GitHub Token",
|
|
103
|
+
"NÃO pede Brave nova"
|
|
104
|
+
],
|
|
105
|
+
"must_not": [
|
|
106
|
+
"pedir aluno gerar Brave nova",
|
|
107
|
+
"duplicar BRAVE_SEARCH_API_KEY no .env"
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"success_criteria": [
|
|
112
|
+
"Brave NÃO foi pedida (Princípio 11 funcionou)",
|
|
113
|
+
"GitHub foi pedido normalmente",
|
|
114
|
+
"Brave key original preservada"
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"id": "so-quer-brave",
|
|
119
|
+
"name": "Aluno topa só Brave, GitHub depois",
|
|
120
|
+
"description": "Aluno não quer GitHub agora. Wizard avisa do tradeoff e respeita.",
|
|
121
|
+
"setup": {
|
|
122
|
+
"env_state": ".env limpo",
|
|
123
|
+
"memory_flags": {}
|
|
124
|
+
},
|
|
125
|
+
"interaction_flow": [
|
|
126
|
+
{
|
|
127
|
+
"user": "[após Brave configurada]",
|
|
128
|
+
"expected_agent_behavior": ["pede GitHub Token"]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"user": "github fica pra depois, pode pular",
|
|
132
|
+
"expected_agent_behavior": [
|
|
133
|
+
"explica tradeoff (sem backup automático, depende só do snapshot do Managed)",
|
|
134
|
+
"respeita escolha",
|
|
135
|
+
"marca github_token_active=false, backup_active=false",
|
|
136
|
+
"pula Chromium também (ou pergunta?)",
|
|
137
|
+
"pergunta-âncora",
|
|
138
|
+
"confirma que pode reativar com 'ativa github' depois"
|
|
139
|
+
],
|
|
140
|
+
"must_not": [
|
|
141
|
+
"insistir em GitHub depois de aluno ter declinado claramente"
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"success_criteria": [
|
|
146
|
+
"Brave ativa, GitHub e backup pendentes",
|
|
147
|
+
"aluno foi informado do tradeoff",
|
|
148
|
+
"conectado=true (parcial — só Brave) em MEMORY"
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "env-commitado-deteccao-defensiva",
|
|
153
|
+
"name": "Workspace tem .env commitado por engano antes do passo 5",
|
|
154
|
+
"description": "Antes de salvar GITHUB_TOKEN, wizard verifica histórico git e alerta se .env vazou.",
|
|
155
|
+
"setup": {
|
|
156
|
+
"env_state": ".env tem chaves antigas E foi commitado em algum momento",
|
|
157
|
+
"memory_flags": {
|
|
158
|
+
"autonomia_liberada": true
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
"interaction_flow": [
|
|
162
|
+
{
|
|
163
|
+
"user": "[despachado, após Brave OK]",
|
|
164
|
+
"expected_agent_behavior": ["pede GitHub Token"]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"user": "ghp_XXXXX",
|
|
168
|
+
"expected_agent_behavior": [
|
|
169
|
+
"ANTES de salvar, roda `git log -- .env` no workspace",
|
|
170
|
+
"detecta que .env aparece em commits anteriores",
|
|
171
|
+
"ALERTA crítico: '.env foi commitado em {N} commits anteriores. Suas chaves OpenAI/Brave podem estar públicas no histórico.'",
|
|
172
|
+
"instrui aluno a revogar IMEDIATAMENTE OPENAI_API_KEY e BRAVE_SEARCH_API_KEY no console de cada provider",
|
|
173
|
+
"instrui sobre git filter-branch ou BFG repo cleaner",
|
|
174
|
+
"NÃO salva o GITHUB_TOKEN até aluno confirmar entendimento do risco"
|
|
175
|
+
],
|
|
176
|
+
"must_not": [
|
|
177
|
+
"salvar token e seguir como se nada (chaves antigas continuam vazadas)"
|
|
178
|
+
]
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"user": "entendi, revoguei as chaves antigas, gerei novas, tô limpo",
|
|
182
|
+
"expected_agent_behavior": [
|
|
183
|
+
"salva GITHUB_TOKEN",
|
|
184
|
+
"garante .env no .gitignore",
|
|
185
|
+
"segue fluxo normal (Chromium + backup)"
|
|
186
|
+
]
|
|
187
|
+
}
|
|
188
|
+
],
|
|
189
|
+
"success_criteria": [
|
|
190
|
+
".env vazado foi detectado ANTES de adicionar mais chaves",
|
|
191
|
+
"aluno foi alertado e tomou ação corretiva",
|
|
192
|
+
"GITHUB_TOKEN salvo só após aluno confirmar limpeza"
|
|
193
|
+
]
|
|
194
|
+
}
|
|
195
|
+
]
|
|
196
|
+
}
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wizard-whisper-quick
|
|
3
|
+
status: ATIVO
|
|
4
|
+
category: starter
|
|
5
|
+
owner: aluno
|
|
6
|
+
version: 1.2
|
|
7
|
+
mode: guided
|
|
8
|
+
estimated_time: 5min (ou 30s se já configurado)
|
|
9
|
+
model_compatible: [gpt-5, gpt-5.5, claude-sonnet-4, claude-opus-4, gemini-pro]
|
|
10
|
+
description: Use when student types "configura whisper" / "ativa áudio" / "quero mandar áudio", OR when dispatched by onboarding-checklist as passo 0 (pré-passo opcional). Configures OpenAI API key in .env so student can send voice messages on Telegram instead of typing. Detects existing key first (Princípio 11/.env first), validates with API call, asks only if missing. Ends with smoke test (student sends audio, agent transcribes).
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Wizard Whisper Quick — Passo 0 (Pré-passo opcional)
|
|
14
|
+
|
|
15
|
+
## Promessa
|
|
16
|
+
|
|
17
|
+
Aluno termina esse passo conseguindo **mandar áudio em vez de digitar** no Telegram. Eu transcrevo na hora e respondo. Quem tá no celular dirigindo, andando, fazendo café — fala em vez de teclar.
|
|
18
|
+
|
|
19
|
+
Sem ele, aluno passa a jornada inteira digitando. Com ele, passa falando. Mudança grande na primeira impressão.
|
|
20
|
+
|
|
21
|
+
## Quando disparar
|
|
22
|
+
|
|
23
|
+
**Trigger automático:**
|
|
24
|
+
- `onboarding-checklist` despacha como passo 0 antes da jornada principal
|
|
25
|
+
|
|
26
|
+
**Trigger explícito (standalone):**
|
|
27
|
+
- "configura whisper"
|
|
28
|
+
- "ativa áudio"
|
|
29
|
+
- "quero mandar áudio"
|
|
30
|
+
- "configura openai"
|
|
31
|
+
|
|
32
|
+
**NÃO disparar se:**
|
|
33
|
+
- `whisper_configured=true` em `MEMORY.md` E última validação foi há menos de 7 dias
|
|
34
|
+
- Aluno explicitamente pulou no passo 0 (`whisper_skipped=true` em `MEMORY.md`)
|
|
35
|
+
|
|
36
|
+
## Princípio 11 — Detecção antes de pedir
|
|
37
|
+
|
|
38
|
+
**Antes de qualquer pergunta**, executar checagem em 3 camadas:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
1. Lê .env: existe OPENAI_API_KEY?
|
|
42
|
+
2. Se existe, valida com call de teste à API:
|
|
43
|
+
curl -s https://api.openai.com/v1/models \
|
|
44
|
+
-H "Authorization: Bearer $OPENAI_API_KEY" | head -c 200
|
|
45
|
+
3. Se retorna lista de models (200 OK): chave válida
|
|
46
|
+
Se retorna 401: chave inválida/revogada
|
|
47
|
+
Se outro erro: investiga
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 4 estados detectáveis
|
|
51
|
+
|
|
52
|
+
| Estado | Ação |
|
|
53
|
+
|---|---|
|
|
54
|
+
| **Chave existe e válida** | Marca `whisper_configured=true`, narra "✓ Achei sua chave OpenAI no .env, validei, funcionando", pula direto pro smoke test |
|
|
55
|
+
| **Chave existe mas inválida** | Explica erro específico (revogada/expirada/sintaxe), pede chave nova |
|
|
56
|
+
| **Chave não existe no .env** | Pede ao aluno (fluxo normal abaixo) |
|
|
57
|
+
| **`.env` não existe** | Cria `.env` na raiz do workspace + pede chave |
|
|
58
|
+
|
|
59
|
+
## Fluxo principal (quando precisa pedir chave)
|
|
60
|
+
|
|
61
|
+
### 1. Narrar o que vai acontecer
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
"Antes da gente começar a jornada principal, vou configurar uma coisa
|
|
65
|
+
que destrava você no celular: transcrição de áudio.
|
|
66
|
+
|
|
67
|
+
Sem isso, você responde tudo digitando. Com isso, manda áudio e eu
|
|
68
|
+
entendo. No celular ou no carro, vira diferença grande.
|
|
69
|
+
|
|
70
|
+
Pra ativar, preciso de uma chave da OpenAI (a empresa do ChatGPT).
|
|
71
|
+
Custa centavos por mês de uso (~R$2-5 pra uso pessoal médio).
|
|
72
|
+
|
|
73
|
+
**Você quer ajuda pra pegar essa chave, ou já tem ela fácil aí?**
|
|
74
|
+
|
|
75
|
+
→ Se já tem: só me manda aqui que eu salvo no lugar certo.
|
|
76
|
+
→ Se quer ajuda: te guio passo-a-passo (cadastro OpenAI → cartão → gera chave). Pega 5min.
|
|
77
|
+
→ Se não quiser agora: manda 'pulo' que a gente vai direto pro passo 1 (você ativa depois com 'configura whisper')."
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Esperar resposta:
|
|
81
|
+
- Se aluno mandar a chave direto (começa com `sk-proj-` ou `sk-`): pular pro passo 3 (validar) — não precisa instruir geração.
|
|
82
|
+
- Se aluno mandar "ajuda" / "preciso ajuda" / "como pegar": ir pro passo 2 (instruir geração passo-a-passo).
|
|
83
|
+
- Se aluno mandar "pulo" / "depois" / "deixa pra depois": marcar `whisper_skipped=true` e devolver controle pra `onboarding-checklist`.
|
|
84
|
+
- Outras respostas ambíguas ("já tenho" sem mandar a chave): pedir pra mandar a chave.
|
|
85
|
+
|
|
86
|
+
### 2. Instruir como gerar chave
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
"Pra gerar a chave OpenAI:
|
|
90
|
+
|
|
91
|
+
PARTE 1 — se você NUNCA usou OpenAI API antes:
|
|
92
|
+
|
|
93
|
+
1. Abre https://platform.openai.com/signup (cria conta — pode usar
|
|
94
|
+
o mesmo email do ChatGPT Plus, mas a API é separada)
|
|
95
|
+
2. Confirma o email (chega em 1min)
|
|
96
|
+
3. Vai em https://platform.openai.com/billing
|
|
97
|
+
4. Clica 'Add payment method' → adiciona cartão
|
|
98
|
+
5. Adiciona crédito inicial ($5 mínimo recomendado — dura ~6 meses
|
|
99
|
+
pra uso pessoal médio de Whisper)
|
|
100
|
+
6. Sem isso, qualquer chave que você gerar vai retornar 429 (sem saldo)
|
|
101
|
+
|
|
102
|
+
PARTE 2 — gerar a chave:
|
|
103
|
+
|
|
104
|
+
1. Abre https://platform.openai.com/api-keys (logado)
|
|
105
|
+
2. Clica 'Create new secret key' (canto superior direito)
|
|
106
|
+
3. Nome sugerido: 'openclaw-{seu-agente}' (ex: 'openclaw-atlas')
|
|
107
|
+
4. Permissions: 'All' (default tá bom)
|
|
108
|
+
5. Clica 'Create secret key'
|
|
109
|
+
6. COPIA a chave que aparece (começa com 'sk-proj-' ou 'sk-')
|
|
110
|
+
|
|
111
|
+
⚠️ Atenção segurança:
|
|
112
|
+
- A OpenAI mostra a chave UMA vez só. Fechou janela = tem que gerar outra.
|
|
113
|
+
- ANTES de colar aqui no Telegram: confirma que esse chat é só seu
|
|
114
|
+
(não é grupo). Chave em chat público = vazada.
|
|
115
|
+
- Se desconfiar de qualquer coisa, revoga a chave em
|
|
116
|
+
platform.openai.com/api-keys (botão 'Revoke') e gera nova.
|
|
117
|
+
|
|
118
|
+
Pode mandar a chave."
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 3. Validar a chave que aluno colou
|
|
122
|
+
|
|
123
|
+
Quando aluno mandar a chave, **antes de salvar**:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Testa com call simples ao endpoint /v1/models
|
|
127
|
+
curl -s https://api.openai.com/v1/models \
|
|
128
|
+
-H "Authorization: Bearer {chave_recebida}" \
|
|
129
|
+
-o /tmp/openai-test.json -w "%{http_code}"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
| Resposta | Ação |
|
|
133
|
+
|---|---|
|
|
134
|
+
| 200 | Chave válida, prossegue |
|
|
135
|
+
| 401 | "Essa chave veio com erro 401 — autenticação falhou. Provável que você copiou só parte dela. Pode mandar de novo?" |
|
|
136
|
+
| 429 | "A chave funciona, mas a conta tá sem crédito. Adiciona $5 em platform.openai.com/billing e tenta de novo." |
|
|
137
|
+
| Outros | "Erro inesperado: {código}. Manda no grupo @cursoopenclaw que ajudo a debugar." |
|
|
138
|
+
|
|
139
|
+
### 4. Salvar no .env (formato canônico)
|
|
140
|
+
|
|
141
|
+
Antes de salvar, aplicar **Princípio 1** (backup):
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
Existe .env já?
|
|
145
|
+
- Se SIM: backup em ~/backups/pre-wizard-whisper-{YYYY-MM-DD-HHMM}/.env
|
|
146
|
+
- Se NÃO: cria .env do zero
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Adicionar/atualizar linha no `.env`:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxxxxx
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Importante:**
|
|
156
|
+
- Nome canônico exato: `OPENAI_API_KEY` (não `openai-key`, `OPENAI_TOKEN`, etc).
|
|
157
|
+
- Se já existir linha `OPENAI_API_KEY=...`, substitui (não duplica).
|
|
158
|
+
- Garantir que `.env` tá em `.gitignore` (se workspace tem git inicializado).
|
|
159
|
+
|
|
160
|
+
Confirmar ao aluno:
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
"✓ Chave salva em .env como OPENAI_API_KEY.
|
|
164
|
+
✓ Adicionei .env no .gitignore (se ainda não estava).
|
|
165
|
+
|
|
166
|
+
Próxima vez que algum wizard precisar dessa chave, ele acha sozinho.
|
|
167
|
+
Você não vai precisar mandar de novo."
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 5. Smoke test (pergunta-âncora embutida)
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
"Rapidão antes de fechar este passo: pra confirmar que tá tudo certo,
|
|
174
|
+
manda agora um áudio curto dizendo qualquer coisa — 'oi', 'tô testando',
|
|
175
|
+
'gravando aqui'. Eu transcrevo e te mostro."
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Quando aluno mandar áudio, transcreve via Whisper:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
curl -s https://api.openai.com/v1/audio/transcriptions \
|
|
182
|
+
-H "Authorization: Bearer $OPENAI_API_KEY" \
|
|
183
|
+
-H "Content-Type: multipart/form-data" \
|
|
184
|
+
-F file=@{caminho_audio} \
|
|
185
|
+
-F model=whisper-1
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Mostra transcrição:
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
"✓ Transcrevi: \"{texto}\"
|
|
192
|
+
|
|
193
|
+
Funcionando. A partir de agora pode mandar áudio em qualquer momento —
|
|
194
|
+
eu entendo igual texto. Pode misturar áudio + texto na mesma conversa
|
|
195
|
+
sem problema.
|
|
196
|
+
|
|
197
|
+
Se quer aprofundar como configurar OpenAI API e gerenciar custos,
|
|
198
|
+
a aula é a *A0* — manda 'aula A0'.
|
|
199
|
+
|
|
200
|
+
E se ficou alguma dúvida que eu não cobri, dois caminhos no grupo:
|
|
201
|
+
- resposta rápida 24/7: chama @Openclawzinho (bot IA) no tópico Suporte
|
|
202
|
+
- ajuda humana: pergunta nos outros tópicos
|
|
203
|
+
https://t.me/cursoopenclaw
|
|
204
|
+
|
|
205
|
+
Marquei o passo 0 como feito. Bora pro passo 1 (configurar a personalidade do seu agente)?"
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### 6. Atualizar MEMORY.md
|
|
209
|
+
|
|
210
|
+
Marcar flag e logar decisão:
|
|
211
|
+
|
|
212
|
+
```markdown
|
|
213
|
+
## Flags
|
|
214
|
+
whisper_configured: true
|
|
215
|
+
|
|
216
|
+
## Decisões da jornada
|
|
217
|
+
- {data}: Configurou OpenAI API key. Smoke test áudio passou. Transcrição OK.
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Atualizar `onboarding_current_step: 1`.
|
|
221
|
+
|
|
222
|
+
### 7. Devolver controle pra onboarding-checklist
|
|
223
|
+
|
|
224
|
+
Wizard termina. `onboarding-checklist` retoma e mostra checklist atualizada.
|
|
225
|
+
|
|
226
|
+
## Caminho alternativo: chave já configurada
|
|
227
|
+
|
|
228
|
+
Quando detecção (passo 0 do fluxo) acha chave válida:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
"✓ Detectei que sua chave OpenAI já está configurada no .env.
|
|
232
|
+
Validei agora — funcionando.
|
|
233
|
+
|
|
234
|
+
Mesmo assim, vou fazer um smoke test pra ter certeza que Whisper tá ok:
|
|
235
|
+
|
|
236
|
+
Manda um áudio curto pra mim agora. Pode ser qualquer coisa."
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
A partir daí, fluxo padrão (transcreve, mostra, marca como feito).
|
|
240
|
+
|
|
241
|
+
**Por que validar mesmo já tendo:** chave pode estar lá mas com saldo zerado, sem permissão pra Whisper, ou de uma conta diferente. Smoke test valida end-to-end em 30s.
|
|
242
|
+
|
|
243
|
+
## Caminho alternativo: aluno pula
|
|
244
|
+
|
|
245
|
+
Se aluno mandar "pulo" antes de gerar chave:
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
"Beleza, pulei o passo 0. Você pode ativar áudio depois mandando
|
|
249
|
+
'configura whisper' a qualquer momento, ou no passo 5 (Conectar)
|
|
250
|
+
junto com as outras chaves.
|
|
251
|
+
|
|
252
|
+
Marquei como pulado. Bora pro passo 1?"
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Marca `whisper_skipped=true` em `MEMORY.md` e devolve controle pra `onboarding-checklist`.
|
|
256
|
+
|
|
257
|
+
## Critérios de sucesso
|
|
258
|
+
|
|
259
|
+
- [ ] `OPENAI_API_KEY` no `.env` E validada (call de teste retornou 200)
|
|
260
|
+
- [ ] `.env` existe no `.gitignore` (proteção contra commit acidental)
|
|
261
|
+
- [ ] Smoke test áudio completou (aluno mandou áudio, agente transcreveu, mostrou texto)
|
|
262
|
+
- [ ] `whisper_configured=true` em `MEMORY.md`
|
|
263
|
+
- [ ] `onboarding_current_step=1` (avançou)
|
|
264
|
+
- [ ] Pergunta-âncora respondida (smoke test = a pergunta-âncora desse passo)
|
|
265
|
+
|
|
266
|
+
OU (se pulou):
|
|
267
|
+
|
|
268
|
+
- [ ] `whisper_skipped=true` em `MEMORY.md`
|
|
269
|
+
- [ ] Aluno avisado que pode reativar via "configura whisper"
|
|
270
|
+
|
|
271
|
+
## Erros comuns
|
|
272
|
+
|
|
273
|
+
- **Aluno colou chave inválida (típico erro de copy-paste):** explicar erro específico (401 = autenticação, 429 = sem saldo) ao invés de "deu errado". Aluno volta pro platform.openai.com com clareza do que verificar.
|
|
274
|
+
- **Aluno colou chave do ambiente errado** (ex: chave de uma org sem crédito, ou chave revogada num projeto): smoke test pega isso. Pedir nova.
|
|
275
|
+
- **Aluno mandou áudio mas Whisper falhou:** quase sempre é problema de formato/tamanho do áudio. Telegram converte automaticamente, mas se aluno mandou anexo de outro lugar, pode dar erro. Investigar.
|
|
276
|
+
- **`.env` não tá em `.gitignore`:** falha catastrófica se aluno commitar. Sempre validar antes de salvar chave.
|
|
277
|
+
- **Aluno fica preso na criação da conta OpenAI:** link direto + screenshot do botão "Create new secret key" ajuda. Próxima versão: incluir screenshot inline.
|
|
278
|
+
|
|
279
|
+
## Aplicação dos princípios defensivos
|
|
280
|
+
|
|
281
|
+
Esta skill herda os princípios universais da `onboarding-checklist`. Ver: [`../onboarding-checklist/references/principios-defensivos.md`](../onboarding-checklist/references/principios-defensivos.md).
|
|
282
|
+
|
|
283
|
+
### Aplicação específica
|
|
284
|
+
|
|
285
|
+
- **Princípio 1 (backup antes de sobrescrever):** se `.env` já existe, faz backup timestamped antes de adicionar/modificar `OPENAI_API_KEY`.
|
|
286
|
+
- **Princípio 2 (confirmação humana):** pede confirmação antes de salvar a chave no `.env` ("Vou salvar essa chave em ~/.env como OPENAI_API_KEY. Confirma?").
|
|
287
|
+
- **Princípio 4 (narrar antes de fazer):** explica o que vai acontecer (gerar chave OpenAI, custo, smoke test) antes de pedir aluno fazer.
|
|
288
|
+
- **Princípio 5 (atualizar MEMORY ao concluir):** marca `whisper_configured=true` ou `whisper_skipped=true`.
|
|
289
|
+
- **Princípio 9 (parar se algo der errado):** se chave falhar validação 3x seguidas, parar e oferecer ajuda do grupo (não fica num loop infinito).
|
|
290
|
+
- **Princípio 11 (detectar antes de pedir):** lê `.env` primeiro. Se já tem chave válida, NÃO pede de novo. Apenas valida e segue pro smoke test.
|
|
291
|
+
- **Princípio ".env first":** chave OpenAI segue padrão universal (nome canônico `OPENAI_API_KEY`, leitura prioritária do `.env`).
|
|
292
|
+
|
|
293
|
+
## Modo A vs Modo B (apresentação)
|
|
294
|
+
|
|
295
|
+
A lógica é a mesma. Só muda o jeito de apresentar:
|
|
296
|
+
|
|
297
|
+
**Modo A (aula-por-aula):**
|
|
298
|
+
```
|
|
299
|
+
"Bora pro Módulo 0 — Whisper.
|
|
300
|
+
A aula correspondente é a A0 (Visão geral + créditos OpenAI).
|
|
301
|
+
Recomendo assistir antes pra entender por que a OpenAI cobra
|
|
302
|
+
diferente pra OAuth e API."
|
|
303
|
+
[segue fluxo]
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**Modo B (wizard direto):**
|
|
307
|
+
```
|
|
308
|
+
"Antes da gente começar, uma coisa rápida que destrava você:
|
|
309
|
+
áudio. Posso configurar pra você mandar áudio em vez de digitar?"
|
|
310
|
+
[segue fluxo conversacional, sem mencionar passo/aula]
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Por baixo, mesmo fluxo de detecção/validação/salvamento/smoke test.
|
|
314
|
+
|
|
315
|
+
## Comando "exemplo" neste contexto
|
|
316
|
+
|
|
317
|
+
Se aluno pedir "exemplo" durante esse wizard, NÃO tem template Amora correspondente (chave API é só código). Resposta padrão:
|
|
318
|
+
|
|
319
|
+
```
|
|
320
|
+
"Pra esse passo não tenho exemplo do Bruno — chave OpenAI é só
|
|
321
|
+
código numérico, não tem 'jeito' de fazer.
|
|
322
|
+
|
|
323
|
+
Se você travou em algo específico (não sabe onde clicar, conta nova,
|
|
324
|
+
cartão), me conta o que tá pegando que eu te ajudo."
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
## Referências
|
|
328
|
+
|
|
329
|
+
### Internas
|
|
330
|
+
- Princípios universais: [`../onboarding-checklist/references/principios-defensivos.md`](../onboarding-checklist/references/principios-defensivos.md) (Princípios 1, 2, 4, 5, 9, 11)
|
|
331
|
+
- Comando "pulo": [`../onboarding-checklist/references/comandos-canonicos.md`](../onboarding-checklist/references/comandos-canonicos.md) (comando 2)
|
|
332
|
+
- Pergunta-âncora padrão: [`../onboarding-checklist/references/mapa-aulas.md`](../onboarding-checklist/references/mapa-aulas.md) (passo 0)
|
|
333
|
+
|
|
334
|
+
### Externas
|
|
335
|
+
- OpenAI API keys: https://platform.openai.com/api-keys
|
|
336
|
+
- OpenAI billing: https://platform.openai.com/billing
|
|
337
|
+
- OpenAI Whisper docs: https://platform.openai.com/docs/guides/speech-to-text
|
|
338
|
+
- Custos Whisper: $0.006/min de áudio (~R$3 por 100min — uso pessoal médio)
|
|
339
|
+
|
|
340
|
+
## Status
|
|
341
|
+
|
|
342
|
+
✅ ATIVO desde v1 do Starter Kit (02/05/2026).
|
|
343
|
+
|
|
344
|
+
## Roadmap
|
|
345
|
+
|
|
346
|
+
- v1.1: Screenshot inline mostrando exatamente onde clicar em platform.openai.com (reduz fricção de aluno leigo)
|
|
347
|
+
- v1.2: Smoke test multi-idioma (validar que aluno em PT-BR funciona perfeito)
|
|
348
|
+
- v1.3: Detecção de saldo OpenAI restante (pré-aviso quando aluno tá com $1 de crédito)
|
|
349
|
+
- v2: Suporte alternativo a Groq Whisper (gratuito, rate-limited) pra aluno sem cartão
|