@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,334 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wizard-whatsapp
|
|
3
|
+
status: ATIVO
|
|
4
|
+
category: canais
|
|
5
|
+
owner: aluno
|
|
6
|
+
version: 1.0
|
|
7
|
+
mode: guided
|
|
8
|
+
estimated_time: 15-45min (varia por modo escolhido)
|
|
9
|
+
model_compatible: [gpt-5, gpt-5.5, claude-sonnet-4, claude-opus-4]
|
|
10
|
+
description: Use when student types "ativa whatsapp" / "configura whatsapp" / "quero usar whatsapp", typically AFTER finishing primeira-vitoria (next-step optional). Configures WhatsApp as additional channel beyond Telegram, with 2 modes (sessão própria / chip dedicado). Default behavior: read-only — agent only responds when EXPLICITLY mentioned/triggered, NOT to every message. Asks use case BEFORE configuring (Princípio 7 — em dúvida, pergunta).
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Wizard WhatsApp — Canal Opcional Pós-Vitória
|
|
14
|
+
|
|
15
|
+
## Promessa
|
|
16
|
+
|
|
17
|
+
Aluno ativa WhatsApp como canal extra do agente. NÃO substitui Telegram (que continua o canal principal — UX da checklist depende dele). Adiciona caminho alternativo pra interagir com agente quando WhatsApp é mais conveniente (mobile, mensagens curtas, áudio).
|
|
18
|
+
|
|
19
|
+
**Default crítico:** modo **read-only** — agente NÃO responde proativamente a todas as mensagens. Responde só quando aluno aciona explicitamente.
|
|
20
|
+
|
|
21
|
+
## Quando disparar
|
|
22
|
+
|
|
23
|
+
**Trigger explícito (sempre — não é trigger automático):**
|
|
24
|
+
- "ativa whatsapp"
|
|
25
|
+
- "configura whatsapp"
|
|
26
|
+
- "quero usar whatsapp"
|
|
27
|
+
- "adiciona whatsapp"
|
|
28
|
+
|
|
29
|
+
**NÃO disparar se:**
|
|
30
|
+
- `whatsapp_active=true` em `MEMORY.md` E sessão WhatsApp ainda válida (token não expirou)
|
|
31
|
+
|
|
32
|
+
Esse wizard NÃO é parte da jornada principal — é opcional pós-primeira-vitória.
|
|
33
|
+
|
|
34
|
+
## Pergunta zero — caso de uso ANTES de configurar (Princípio 7)
|
|
35
|
+
|
|
36
|
+
Antes de qualquer config técnica, perguntar caso de uso:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
"Antes de mexer em WhatsApp, me conta: pra que você quer usar?
|
|
40
|
+
|
|
41
|
+
Casos comuns:
|
|
42
|
+
|
|
43
|
+
a) Eu quero mandar mensagem pro agente do meu WhatsApp pessoal
|
|
44
|
+
(em vez de abrir Telegram). Mais cômodo no mobile.
|
|
45
|
+
|
|
46
|
+
b) Eu tenho um chip dedicado (ex: número de empresa) e quero o
|
|
47
|
+
agente atendendo lá com regras claras.
|
|
48
|
+
|
|
49
|
+
c) Quero o agente respondendo grupos/contatos automaticamente
|
|
50
|
+
(suporte, atendimento, vendas).
|
|
51
|
+
|
|
52
|
+
d) Outro — me conta.
|
|
53
|
+
|
|
54
|
+
Manda 'a', 'b', 'c' ou descreve."
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Por que perguntar antes:** os 3 casos precisam de SETUP DIFERENTE. Caso 'c' (resposta automática) tem riscos sérios (agente respondendo contato pessoal sem querer). Caso 'a' é mais simples. Caso 'b' é o intermediário.
|
|
58
|
+
|
|
59
|
+
### Resposta por caso
|
|
60
|
+
|
|
61
|
+
#### Caso 'a' — sessão própria (WhatsApp pessoal do aluno)
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
"Entendi. Caso A: sua sessão WhatsApp pessoal vinculada ao agente.
|
|
65
|
+
|
|
66
|
+
Implicações importantes:
|
|
67
|
+
|
|
68
|
+
✓ Você manda áudio/texto pro agente como se fosse contato seu
|
|
69
|
+
✓ Agente responde só PRA VOCÊ (o número que você usar pra mandar)
|
|
70
|
+
✗ Agente NUNCA responde outros contatos seus por padrão (read-only)
|
|
71
|
+
✗ Conexão depende de Linked Devices (mesma sessão do app — agente
|
|
72
|
+
'lê suas mensagens', mas só responde quando você manda em chat
|
|
73
|
+
1:1 contigo mesmo)
|
|
74
|
+
|
|
75
|
+
Modo correto: você cria um chat com você mesmo no WhatsApp
|
|
76
|
+
('Mensagem para si próprio') e usa esse chat como canal.
|
|
77
|
+
|
|
78
|
+
Tradeoff vs Telegram: WhatsApp não suporta UI visual da checklist
|
|
79
|
+
(botões inline, atualização in-place). Tudo vira texto plano.
|
|
80
|
+
A jornada principal ficou no Telegram por isso.
|
|
81
|
+
|
|
82
|
+
Quer prosseguir com setup A? Manda 'sim' ou 'mudei de ideia'."
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### Caso 'b' — chip dedicado
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
"Entendi. Caso B: chip dedicado (número de empresa ou separado).
|
|
89
|
+
|
|
90
|
+
Implicações:
|
|
91
|
+
|
|
92
|
+
✓ Agente atende esse número com regras claras
|
|
93
|
+
✓ Não mistura com seu WhatsApp pessoal (separação limpa)
|
|
94
|
+
✗ Custo: chip + plano (~R$ 15-30/mês) + setup ~30min
|
|
95
|
+
|
|
96
|
+
Setup envolve:
|
|
97
|
+
1. Você configura WhatsApp Business API ou Linked Devices nesse chip
|
|
98
|
+
2. Agente conecta a esse chip
|
|
99
|
+
3. Definimos regras: atende ou só lê? Quais contatos?
|
|
100
|
+
|
|
101
|
+
Esse caso é mais robusto pra casos PROFISSIONAIS (atendimento,
|
|
102
|
+
suporte). Pra uso pessoal o Caso A já basta.
|
|
103
|
+
|
|
104
|
+
Quer prosseguir com B? Manda 'sim' ou 'volto pro A'."
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
#### Caso 'c' — atendimento automático
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
"Entendi. Caso C tem RISCO sério que você precisa pesar antes
|
|
111
|
+
de seguir.
|
|
112
|
+
|
|
113
|
+
⚠️ RISCO: se eu respondo automático em grupos/contatos do seu
|
|
114
|
+
WhatsApp pessoal, posso responder por você em conversa que não
|
|
115
|
+
era pra mim. Casos reais já aconteceram:
|
|
116
|
+
- Agente respondendo grupo de família com contexto profissional
|
|
117
|
+
- Agente respondendo cliente quando aluno não queria
|
|
118
|
+
- Agente vazando contexto de outras conversas
|
|
119
|
+
|
|
120
|
+
Pra fazer C com segurança:
|
|
121
|
+
|
|
122
|
+
1. Use chip DEDICADO (Caso B), não WhatsApp pessoal
|
|
123
|
+
2. Whitelist de contatos que agente PODE responder (lista explícita)
|
|
124
|
+
3. Modo de aprovação: agente sugere resposta, você aprova antes de enviar
|
|
125
|
+
|
|
126
|
+
Posso configurar C com chip dedicado + whitelist + aprovação manual.
|
|
127
|
+
|
|
128
|
+
Quer:
|
|
129
|
+
a) Seguir com chip dedicado + segurança extra (Caso B+ na real)
|
|
130
|
+
b) Voltar pro Caso A (uso pessoal seguro)
|
|
131
|
+
c) Pular WhatsApp por enquanto"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
#### Caso 'd' — outro
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
"Manda detalhe do que você quer fazer. Vou avaliar se cabe num
|
|
138
|
+
dos modos existentes ou se precisa abordagem custom."
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Princípio 11 — Detecção (sempre, antes do setup técnico)
|
|
142
|
+
|
|
143
|
+
Após aluno escolher caso, antes de configurar, detectar:
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
1. WhatsApp Web/Linked Device já configurado no Managed?
|
|
147
|
+
2. Chip dedicado já registrado?
|
|
148
|
+
3. Tokens válidos no .env (WHATSAPP_SESSION_TOKEN, etc)?
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Se já tudo pronto: marca `whatsapp_active=true` e vai pra teste.
|
|
152
|
+
|
|
153
|
+
## Fluxo Caso A (sessão própria — mais comum)
|
|
154
|
+
|
|
155
|
+
### 1. Aluno escaneia QR code
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
"Vou gerar QR code do WhatsApp Web pra você escanear.
|
|
159
|
+
|
|
160
|
+
Isso vincula a sessão do agente ao seu WhatsApp pessoal — mesma
|
|
161
|
+
mecânica de quando você usa WhatsApp Web no navegador.
|
|
162
|
+
|
|
163
|
+
[gera QR via openclaw whatsapp link-qr]
|
|
164
|
+
|
|
165
|
+
Abre o WhatsApp no celular →
|
|
166
|
+
Configurações →
|
|
167
|
+
Aparelhos conectados →
|
|
168
|
+
'Conectar um aparelho' →
|
|
169
|
+
Escaneia o QR.
|
|
170
|
+
|
|
171
|
+
Quando vincular, manda 'conectado' aqui."
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### 2. Validar conexão
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
openclaw whatsapp status
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Se conectado: prossegue. Se não: investigar (provavelmente QR expirou ou não foi escaneado).
|
|
181
|
+
|
|
182
|
+
### 3. Configurar regras default — read-only
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
"Configuração padrão (recomendada): MODO READ-ONLY.
|
|
186
|
+
|
|
187
|
+
O que significa:
|
|
188
|
+
✓ Eu LEIO todas as suas mensagens (pra você poder me invocar)
|
|
189
|
+
✗ Eu NUNCA respondo automaticamente
|
|
190
|
+
✓ Eu respondo SÓ quando você manda mensagem pra mim explicitamente
|
|
191
|
+
(no chat 'Você mesmo')
|
|
192
|
+
|
|
193
|
+
Como invocar quando precisar:
|
|
194
|
+
- No chat 'Você mesmo' (Mensagem para si próprio): qualquer mensagem
|
|
195
|
+
é uma instrução pra mim
|
|
196
|
+
- Em outros chats: começa mensagem com '@agente' (ou nome configurado)
|
|
197
|
+
pra acionar — fora isso, fico quieta
|
|
198
|
+
|
|
199
|
+
Confirma esse modo? Ou prefere customizar?"
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Salvar config:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
openclaw whatsapp config --mode=read-only \
|
|
206
|
+
--self-chat-trigger=any \
|
|
207
|
+
--other-chat-trigger="@agente"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 4. Smoke test
|
|
211
|
+
|
|
212
|
+
```
|
|
213
|
+
"Manda mensagem pra mim no chat 'Você mesmo' agora.
|
|
214
|
+
|
|
215
|
+
Pode ser 'oi' ou áudio curto — qualquer coisa.
|
|
216
|
+
Eu respondo aqui ou no WhatsApp?
|
|
217
|
+
"
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Pergunta extra: "qual canal prefere pra resposta?" (default: mesmo canal — WhatsApp).
|
|
221
|
+
|
|
222
|
+
Quando aluno mandar, validar end-to-end.
|
|
223
|
+
|
|
224
|
+
### 5. Atualizar MEMORY.md
|
|
225
|
+
|
|
226
|
+
```markdown
|
|
227
|
+
## Flags
|
|
228
|
+
whatsapp_active: true
|
|
229
|
+
whatsapp_mode: read-only
|
|
230
|
+
whatsapp_caso: A (sessão própria)
|
|
231
|
+
|
|
232
|
+
## Decisões da jornada
|
|
233
|
+
- {data}: Ativou WhatsApp. Modo: read-only. Caso: A. Trigger em outros chats: @agente.
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 6. Aviso final
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
"✓ WhatsApp ativo (modo read-only).
|
|
240
|
+
|
|
241
|
+
Importantes:
|
|
242
|
+
|
|
243
|
+
🔒 Privacidade: eu vejo TODAS suas mensagens (limitação do WhatsApp Web).
|
|
244
|
+
Mas só processo as que são pra mim (chat 'Você mesmo' ou @agente).
|
|
245
|
+
Mensagens privadas suas com outros contatos não viram contexto meu.
|
|
246
|
+
|
|
247
|
+
⏱️ Sessão expira em ~14 dias se WhatsApp Web ficar offline. Pra renovar,
|
|
248
|
+
manda 'renova whatsapp' que eu gero novo QR.
|
|
249
|
+
|
|
250
|
+
🛑 Pra desativar a qualquer momento:
|
|
251
|
+
'desativa whatsapp' — agente para de processar WhatsApp imediatamente.
|
|
252
|
+
Sessão Linked Device permanece (pra reativar fácil) até você desconectar
|
|
253
|
+
manualmente no app."
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Fluxo Caso B (chip dedicado)
|
|
257
|
+
|
|
258
|
+
Mais complexo. Setup principal:
|
|
259
|
+
|
|
260
|
+
1. Aluno informa número do chip
|
|
261
|
+
2. Configura WhatsApp Business API ou Linked Device no chip
|
|
262
|
+
3. Agente conecta via API key (formato `WHATSAPP_BUSINESS_TOKEN` no `.env`)
|
|
263
|
+
4. Define lista de contatos que agente atende (whitelist) — opcional
|
|
264
|
+
5. Smoke test
|
|
265
|
+
|
|
266
|
+
Detalhes específicos do Business API ficam em `references/whatsapp-business-setup.md` (criar quando necessário).
|
|
267
|
+
|
|
268
|
+
## Fluxo Caso C (atendimento automático)
|
|
269
|
+
|
|
270
|
+
Sempre redireciona pra Caso B+ (chip dedicado + whitelist + aprovação):
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
"Pra atendimento automático seguro: chip dedicado + whitelist explícita
|
|
274
|
+
de contatos + modo aprovação (agente sugere resposta, você aprova antes
|
|
275
|
+
de enviar).
|
|
276
|
+
|
|
277
|
+
Modo aprovação evita 90% dos riscos. Você dorme tranquilo sabendo que
|
|
278
|
+
nada sai sem sua palavra.
|
|
279
|
+
|
|
280
|
+
Vou configurar como Caso B+ — manda 'segue B+' pra prosseguir."
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## Critérios de sucesso
|
|
284
|
+
|
|
285
|
+
- [ ] Caso de uso identificado e confirmado pelo aluno
|
|
286
|
+
- [ ] Sessão WhatsApp conectada (QR escaneado OU API token válido)
|
|
287
|
+
- [ ] Modo correto configurado (read-only por default)
|
|
288
|
+
- [ ] Smoke test passou
|
|
289
|
+
- [ ] `whatsapp_active=true` em `MEMORY.md`
|
|
290
|
+
- [ ] `whatsapp_mode` e `whatsapp_caso` registrados
|
|
291
|
+
- [ ] Aluno informado de privacidade + expiração + comando de desativação
|
|
292
|
+
|
|
293
|
+
## Erros comuns
|
|
294
|
+
|
|
295
|
+
- **QR expirou antes de aluno escanear:** padrão WhatsApp Web (45s). Gerar novo.
|
|
296
|
+
- **Aluno escolheu Caso C sem entender risco:** sempre redirecionar pra B+ (Princípio 7 — em dúvida, perguntar). Não configurar atendimento automático em WhatsApp pessoal.
|
|
297
|
+
- **Aluno tem 2+ números:** WhatsApp Web aceita 1 sessão por dispositivo. Esclarecer qual número será o canal.
|
|
298
|
+
- **Sessão derrubada por outra conexão:** se aluno conectar WhatsApp Web em outro lugar, pode invalidar a sessão do agente. Avisar antes.
|
|
299
|
+
|
|
300
|
+
## Aplicação dos princípios defensivos
|
|
301
|
+
|
|
302
|
+
- **Princípio 2 (confirmação):** confirma cada escolha (caso, modo, trigger).
|
|
303
|
+
- **Princípio 3 (NUNCA elevação):** NÃO escala automaticamente do read-only pra atendimento sem confirmação explícita do aluno.
|
|
304
|
+
- **Princípio 4 (narrar antes):** explica o que cada modo FAZ antes de configurar.
|
|
305
|
+
- **Princípio 5 (atualizar MEMORY):** múltiplas flags (mode, caso, expiração).
|
|
306
|
+
- **Princípio 7 (em dúvida, pergunta):** caso C sempre cai em B+ — não assume que aluno sabe risco.
|
|
307
|
+
- **Princípio 11 (detectar antes):** lê estado WhatsApp antes de pedir QR.
|
|
308
|
+
|
|
309
|
+
## Decisões arquiteturais
|
|
310
|
+
|
|
311
|
+
- **D14 (Telegram-only no kit core):** WhatsApp é OPCIONAL pós-vitória. Não substitui Telegram da jornada.
|
|
312
|
+
- **D15 (read-only default):** modo conservador inicial. Aluno escolhe expandir se quiser.
|
|
313
|
+
|
|
314
|
+
Ver: [`../../../DECISOES-ARQUITETURA.md`](../../../DECISOES-ARQUITETURA.md)
|
|
315
|
+
|
|
316
|
+
## Referências
|
|
317
|
+
|
|
318
|
+
### Internas
|
|
319
|
+
- Princípios: [`../../starter/onboarding-checklist/references/principios-defensivos.md`](../../starter/onboarding-checklist/references/principios-defensivos.md)
|
|
320
|
+
|
|
321
|
+
### Externas
|
|
322
|
+
- WhatsApp Web FAQ: https://faq.whatsapp.com/general/download-and-installation/about-whatsapp-web
|
|
323
|
+
- WhatsApp Business API: https://business.whatsapp.com/products/business-platform
|
|
324
|
+
|
|
325
|
+
## Status
|
|
326
|
+
|
|
327
|
+
✅ ATIVO desde v1 do Starter Kit (02/05/2026).
|
|
328
|
+
|
|
329
|
+
## Roadmap
|
|
330
|
+
|
|
331
|
+
- v1.1: Suporte a múltiplos canais simultâneos (Telegram + WhatsApp + Slack)
|
|
332
|
+
- v1.2: Whitelist visual no Telegram (aluno gerencia "quem agente pode responder no WhatsApp")
|
|
333
|
+
- v1.3: Modo aprovação manual (agente sugere → aluno aprova → envia) pra atendimento
|
|
334
|
+
- v2: Routing inteligente — agente decide qual canal usar baseado no tipo de mensagem
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Registry — operacional/ (skills utilities)
|
|
2
|
+
|
|
3
|
+
> Skills utilities pra operação contínua do agente.
|
|
4
|
+
> Não fazem parte da jornada obrigatória do starter-kit, mas são instaladas/ativadas durante ela.
|
|
5
|
+
|
|
6
|
+
## Skills
|
|
7
|
+
|
|
8
|
+
| Skill | Status | Versão | Owner | Mode | Quando ativar |
|
|
9
|
+
|---|---|---|---|---|---|
|
|
10
|
+
| [`backup-workspace-github`](backup-workspace-github/SKILL.md) | ✅ ATIVO | 1.0 | aluno | guided | Item "Integrações" da checklist (módulo 7) ou comando "ativa backup" |
|
|
11
|
+
|
|
12
|
+
## Princípios universais
|
|
13
|
+
|
|
14
|
+
Todas as skills aqui herdam os princípios defensivos da `onboarding-checklist`. Ver: [`../starter/onboarding-checklist/references/principios-defensivos.md`](../starter/onboarding-checklist/references/principios-defensivos.md).
|
|
15
|
+
|
|
16
|
+
## Roadmap (skills futuras)
|
|
17
|
+
|
|
18
|
+
- `health-check` — diagnóstico do estado do agente (skills, crons, integrações)
|
|
19
|
+
- `restore-from-backup` — reverte workspace pra estado anterior do GitHub
|
|
20
|
+
- `clean-orphans` — remove arquivos órfãos detectados em pastas
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: backup-workspace-github
|
|
3
|
+
status: ATIVO
|
|
4
|
+
category: operacional
|
|
5
|
+
owner: aluno
|
|
6
|
+
version: 1.0
|
|
7
|
+
mode: guided
|
|
8
|
+
estimated_time: 5min (ativação) + automatic (cron)
|
|
9
|
+
model_compatible: [gpt-5, gpt-5.5, claude-sonnet-4, claude-opus-4]
|
|
10
|
+
description: Use when student wants automatic daily backup of workspace to private GitHub repo. Activates during item "Integrações" of the wizard checklist OR standalone when student types "ativa backup github" / "configura backup". Combines openclaw backup create + git push to student's private repo. Cron daily at 03:00 BRT. Maintains 30-day history. Notifies via Telegram on failure.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Backup Workspace GitHub
|
|
14
|
+
|
|
15
|
+
## Promessa
|
|
16
|
+
|
|
17
|
+
O workspace inteiro do aluno (skills, memory, configs, arquivos raiz — exceto `.env`) é versionado automaticamente todo dia em um repo privado do GitHub. Se algo der errado (deleção acidental, bug do Managed, hardware fail), aluno restaura pelo histórico de commits.
|
|
18
|
+
|
|
19
|
+
## Quando disparar
|
|
20
|
+
|
|
21
|
+
**Trigger automático (durante jornada):**
|
|
22
|
+
- Aluno chega no item "Integrações" da checklist (módulo 7) e fornece o GitHub Service Token
|
|
23
|
+
|
|
24
|
+
**Trigger explícito (standalone):**
|
|
25
|
+
- "ativa backup github"
|
|
26
|
+
- "configura backup"
|
|
27
|
+
- "quero backup do workspace"
|
|
28
|
+
|
|
29
|
+
**NÃO disparar se:**
|
|
30
|
+
- Cron `backup-workspace-github` já tá rodando (verificar via `openclaw cron list`)
|
|
31
|
+
- Aluno explicitamente desativou backup (`backup_disabled=true` em `MEMORY.md`)
|
|
32
|
+
|
|
33
|
+
## Princípio 11 — Detectar antes de pedir
|
|
34
|
+
|
|
35
|
+
Antes de qualquer coisa, **detectar** estado atual:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
1. Lê .env: existe GITHUB_TOKEN?
|
|
39
|
+
2. Roda `openclaw cron list`: existe cron backup-workspace-github?
|
|
40
|
+
3. Verifica se repo privado existe no GitHub do aluno
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Casos:**
|
|
44
|
+
|
|
45
|
+
| Estado | Ação |
|
|
46
|
+
|---|---|
|
|
47
|
+
| Tudo configurado e rodando | "✓ Backup já tá ativo. Último push: {timestamp}. Próximo: hoje 03:00." |
|
|
48
|
+
| Token existe mas cron não | Ativa cron com token existente (skip pedir token) |
|
|
49
|
+
| Token não existe | Pede token (segue fluxo "credencial não encontrada" do Princípio 11/.env first) |
|
|
50
|
+
| Repo não existe | Cria repo privado no GitHub do aluno via API |
|
|
51
|
+
|
|
52
|
+
## Princípio ".env first"
|
|
53
|
+
|
|
54
|
+
Token GitHub segue padrão universal de credenciais:
|
|
55
|
+
|
|
56
|
+
1. Tenta ler `GITHUB_TOKEN` do `.env`
|
|
57
|
+
2. Se achou e funciona (call de teste à API GitHub): usa direto
|
|
58
|
+
3. Se achou mas inválido: explica erro e pede novo token
|
|
59
|
+
4. Se não achou: pede ao aluno (uma vez)
|
|
60
|
+
5. Salva no `.env` com nome canônico `GITHUB_TOKEN`
|
|
61
|
+
|
|
62
|
+
**Como aluno gera o token:**
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
"Pra criar GitHub Service Token:
|
|
66
|
+
|
|
67
|
+
1. Acessa https://github.com/settings/tokens (logado)
|
|
68
|
+
2. Clica 'Generate new token (classic)'
|
|
69
|
+
3. Nome sugerido: 'openclaw-backup-{seu-agente}'
|
|
70
|
+
4. Expiration: 'No expiration' (ou 1 ano se preferir rotacionar)
|
|
71
|
+
5. Marca scopes: 'repo' (acesso completo a repos privados)
|
|
72
|
+
6. Clica 'Generate token' no fim
|
|
73
|
+
7. Copia o token (começa com ghp_...) e cola aqui
|
|
74
|
+
|
|
75
|
+
Atenção: o token só é mostrado UMA vez. Copia agora."
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Fluxo de configuração
|
|
79
|
+
|
|
80
|
+
### 1. Validar token GitHub
|
|
81
|
+
|
|
82
|
+
Após receber token, agente roda:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
curl -s -H "Authorization: token GITHUB_TOKEN" https://api.github.com/user
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Se retorna 200 com info do usuário: ✓ token válido
|
|
89
|
+
Se retorna 401: token inválido — pede novo
|
|
90
|
+
Se outro erro: investiga e reporta
|
|
91
|
+
|
|
92
|
+
### 2. Criar repo privado (se não existir)
|
|
93
|
+
|
|
94
|
+
Nome padrão: `{username-github}-workspace-backup`
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
curl -X POST -H "Authorization: token GITHUB_TOKEN" \
|
|
98
|
+
https://api.github.com/user/repos \
|
|
99
|
+
-d '{"name": "{nome}", "private": true, "auto_init": true}'
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Confirmação ao aluno: "✓ Repo criado: github.com/{username}/{nome}-workspace-backup (privado)"
|
|
103
|
+
|
|
104
|
+
### 3. Configurar git local no workspace
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
cd $WORKSPACE
|
|
108
|
+
git init # se não estiver inicializado
|
|
109
|
+
git remote add backup https://{TOKEN}@github.com/{username}/{nome}-workspace-backup.git
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Importante:** o token vai inline no remote URL. Cuidado com vazamento — não commitar `.git/config` em outro repo.
|
|
113
|
+
|
|
114
|
+
### 4. Criar `.gitignore` defensivo
|
|
115
|
+
|
|
116
|
+
Adicionar/verificar entradas no `.gitignore` do workspace:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
.env
|
|
120
|
+
.env.local
|
|
121
|
+
.env.*.local
|
|
122
|
+
*.key
|
|
123
|
+
*.pem
|
|
124
|
+
*-credentials.json
|
|
125
|
+
.tmp-*
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Crítico:** `.env` NUNCA vai pro backup. Chaves API ficam só no Managed do aluno.
|
|
129
|
+
|
|
130
|
+
### 5. Criar cron diário
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
openclaw cron create \
|
|
134
|
+
--name "backup-workspace-github" \
|
|
135
|
+
--schedule "0 3 * * *" \
|
|
136
|
+
--tz "America/Sao_Paulo" \
|
|
137
|
+
--command "cd $WORKSPACE && \
|
|
138
|
+
openclaw backup create && \
|
|
139
|
+
git add -A && \
|
|
140
|
+
git commit -m \"backup: $(date +%Y-%m-%d-%H%M)\" && \
|
|
141
|
+
git push backup main"
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Confirma ao aluno: "✓ Cron configurado: diário às 03:00 BRT"
|
|
145
|
+
|
|
146
|
+
### 6. Primeiro push manual (smoke test)
|
|
147
|
+
|
|
148
|
+
Roda imediatamente uma vez pra confirmar que funciona end-to-end:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
cd $WORKSPACE
|
|
152
|
+
git add -A
|
|
153
|
+
git commit -m "backup: initial setup $(date +%Y-%m-%d-%H%M)"
|
|
154
|
+
git push backup main
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Se sucesso: "✓ Primeiro backup feito. Você pode ver em https://github.com/{username}/{nome}-workspace-backup"
|
|
158
|
+
|
|
159
|
+
Se erro: investiga (provavelmente .gitignore mal configurado ou token sem scope correto) e reporta.
|
|
160
|
+
|
|
161
|
+
### 7. Atualizar MEMORY.md
|
|
162
|
+
|
|
163
|
+
```markdown
|
|
164
|
+
- {data}: backup-workspace-github ativado. Repo: {url}. Cron: 03:00 BRT.
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
E flag: `backup_active: true`
|
|
168
|
+
|
|
169
|
+
## Critérios de sucesso
|
|
170
|
+
|
|
171
|
+
- [ ] `GITHUB_TOKEN` no `.env` e validado
|
|
172
|
+
- [ ] Repo privado criado no GitHub do aluno
|
|
173
|
+
- [ ] `.gitignore` exclui `.env` e secrets
|
|
174
|
+
- [ ] Cron `backup-workspace-github` rodando
|
|
175
|
+
- [ ] Primeiro push manual completou com sucesso
|
|
176
|
+
- [ ] `backup_active: true` em `MEMORY.md`
|
|
177
|
+
|
|
178
|
+
## Erros comuns
|
|
179
|
+
|
|
180
|
+
- **Token sem scope `repo`:** GitHub retorna 404 ao tentar criar repo. Pedir aluno regenerar token marcando `repo`.
|
|
181
|
+
- **`.env` indo pro backup:** falha catastrófica. SEMPRE validar `.gitignore` antes do primeiro push.
|
|
182
|
+
- **Repo nome conflita:** se já existir repo com mesmo nome, sufixar com `-2`, `-3`, etc.
|
|
183
|
+
- **Workspace tem outro remote configurado:** usar `backup` como nome do remote (não `origin`) pra não conflitar.
|
|
184
|
+
- **Cron silenciosamente falha:** configurar notificação via Telegram quando cron falha (próxima versão).
|
|
185
|
+
|
|
186
|
+
## Histórico de commits
|
|
187
|
+
|
|
188
|
+
Cada backup vira commit separado. Aluno consegue:
|
|
189
|
+
|
|
190
|
+
- Ver histórico: `git log backup/main`
|
|
191
|
+
- Restaurar versão antiga: `git checkout backup/main~7` (volta 7 dias)
|
|
192
|
+
- Ver diff: `git diff backup/main~1 backup/main` (mudanças do último dia)
|
|
193
|
+
|
|
194
|
+
Histórico de 30 dias garantido por convenção. Mais que isso, GitHub não cobra extra (repo privado free tier).
|
|
195
|
+
|
|
196
|
+
## Limpeza/desativação
|
|
197
|
+
|
|
198
|
+
Se aluno quiser parar:
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
"desativa backup"
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Comportamento:
|
|
205
|
+
1. Remove cron: `openclaw cron remove backup-workspace-github`
|
|
206
|
+
2. Marca `backup_disabled: true` em `MEMORY.md`
|
|
207
|
+
3. **NÃO deleta repo** — fica no GitHub do aluno como histórico
|
|
208
|
+
4. **NÃO remove `GITHUB_TOKEN` do .env** — pode ser útil pra outras integrações
|
|
209
|
+
5. Confirma: "✓ Backup desativado. Repo histórico continua em {url}. Reativar a qualquer momento com 'ativa backup'."
|
|
210
|
+
|
|
211
|
+
## Atualização do TOOLS (se existir)
|
|
212
|
+
|
|
213
|
+
Esta skill aplica Princípio 12 (mapas distribuídos). Se aluno tiver `skills/operacional/MAPA.md`, atualizar com:
|
|
214
|
+
|
|
215
|
+
```markdown
|
|
216
|
+
| backup-workspace-github | Backup diário do workspace pro GitHub privado | ativo |
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Não criar TOOLS.md monolítico (Princípio 12 proíbe).
|
|
220
|
+
|
|
221
|
+
## Princípios Defensivos
|
|
222
|
+
|
|
223
|
+
Esta skill herda os princípios universais da `onboarding-checklist`. Ver: `skills/starter/onboarding-checklist/references/principios-defensivos.md`.
|
|
224
|
+
|
|
225
|
+
### Aplicação específica
|
|
226
|
+
|
|
227
|
+
- **Princípio 1 (backup antes):** N/A — esta skill É backup. Mas valida `.gitignore` antes do primeiro push (proteção equivalente)
|
|
228
|
+
- **Princípio 2 (confirmação):** pede confirmação antes de criar cron (afeta infra)
|
|
229
|
+
- **Princípio 11 (detectar antes de pedir):** lê estado atual antes de configurar — se já tá rodando, não duplica
|
|
230
|
+
- **Princípio ".env first":** GitHub Token segue padrão universal de credenciais
|
|
231
|
+
|
|
232
|
+
## Referências
|
|
233
|
+
|
|
234
|
+
- Padrão `.env first`: `skills/starter/onboarding-checklist/references/principios-defensivos.md` (Princípio 11)
|
|
235
|
+
- Como GitHub gera tokens: https://github.com/settings/tokens
|
|
236
|
+
- Documentação `openclaw cron`: rodar `openclaw cron --help`
|
|
237
|
+
|
|
238
|
+
## Status
|
|
239
|
+
|
|
240
|
+
✅ ATIVO desde v1 do Starter Kit (02/05/2026).
|
|
241
|
+
|
|
242
|
+
## Roadmap
|
|
243
|
+
|
|
244
|
+
- v1.1: Notificação automática via Telegram quando cron falha
|
|
245
|
+
- v1.2: Comando "restaura do backup {data}" pra reverter workspace
|
|
246
|
+
- v2: Suporte a múltiplos remotes (backup pra mais de 1 repo simultâneo)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Registry — planejamento/ (Superpowers curado)
|
|
2
|
+
|
|
3
|
+
> 4 skills de pensamento/processo curadas do projeto open-source [obra/superpowers](https://github.com/obra/superpowers).
|
|
4
|
+
> Adaptadas/simplificadas pro contexto do mini-curso OpenClaw v2.
|
|
5
|
+
|
|
6
|
+
## Skills
|
|
7
|
+
|
|
8
|
+
| Skill | Status | Versão | Owner | Mode | Tempo |
|
|
9
|
+
|---|---|---|---|---|---|
|
|
10
|
+
| [`brainstorming`](brainstorming/SKILL.md) | ✅ ATIVO | 1.0 | aluno | guided | 5-15min |
|
|
11
|
+
| [`writing-plans`](writing-plans/SKILL.md) | ✅ ATIVO | 1.0 | aluno | guided | 10-30min |
|
|
12
|
+
| [`executing-plans`](executing-plans/SKILL.md) | ✅ ATIVO | 1.0 | aluno | guided | varia |
|
|
13
|
+
| [`verification-before-completion`](verification-before-completion/SKILL.md) | ✅ ATIVO | 1.0 | aluno | guided | 5-15min |
|
|
14
|
+
|
|
15
|
+
## Fluxo recomendado
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
brainstorming (entender problema)
|
|
19
|
+
↓
|
|
20
|
+
writing-plans (transformar em plano executável)
|
|
21
|
+
↓
|
|
22
|
+
executing-plans (tirar do papel)
|
|
23
|
+
↓
|
|
24
|
+
verification-before-completion (provar que terminou)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Não precisa rodar todas. Pra projetos pequenos, brainstorming + verification já cobre. Pra projetos médios/grandes, todas as 4 valem.
|
|
28
|
+
|
|
29
|
+
## Por que curado?
|
|
30
|
+
|
|
31
|
+
O projeto [obra/superpowers](https://github.com/obra/superpowers) tem 23+ skills. Não faz sentido instalar todas no starter-kit (curva de aprendizado massa).
|
|
32
|
+
|
|
33
|
+
Estas 4 são as que MAIS aplicam pro perfil de aluno do mini-curso (não-engenheiro de software, foco em workflows pessoais/pequenas operações). Conforme aluno avança, pode adicionar mais skills do superpowers manualmente.
|
|
34
|
+
|
|
35
|
+
## Versões
|
|
36
|
+
|
|
37
|
+
Cada skill aqui é VERSÃO CURADA — simplificada do original. Trade-off:
|
|
38
|
+
|
|
39
|
+
✓ Mais fácil de absorver (5-15min de leitura)
|
|
40
|
+
✗ Menos detalhada (não cobre casos edge avançados)
|
|
41
|
+
|
|
42
|
+
Pra versão completa: link na seção Referências de cada skill.
|
|
43
|
+
|
|
44
|
+
## Decisão arquitetural
|
|
45
|
+
|
|
46
|
+
Decisão original (do roadmap): "curar todas as 23 skills do Superpowers" foi rejeitada (ver D em `DECISOES-ARQUITETURA.md`). Curar 4 = começar simples, expandir conforme uso real.
|
|
47
|
+
|
|
48
|
+
## Como aluno ativa
|
|
49
|
+
|
|
50
|
+
Após primeira-vitória, próximos passos opcionais incluem:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
→ Quer instalar skills de planejamento (brainstorming, plans, debugging)?
|
|
54
|
+
Manda 'instala superpowers'
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Quando aluno manda, agente disponibiliza as 4 skills (já estão no kit, basta marcar como ativas).
|
|
58
|
+
|
|
59
|
+
## Princípios universais
|
|
60
|
+
|
|
61
|
+
Mesmo com origem externa, todas seguem os 12 princípios defensivos da `onboarding-checklist`. Especialmente:
|
|
62
|
+
|
|
63
|
+
- **Princípio 5** (atualizar estado em arquivo)
|
|
64
|
+
- **Princípio 7** (em dúvida, perguntar)
|
|
65
|
+
- **Princípio 9** (parar se algo der errado)
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
*Registry v1 — Onda 3 (02/05/2026).*
|
|
70
|
+
*Source: https://github.com/obra/superpowers (autor: jesse alpha aka @obra)*
|