auroq-os 2.1.0 → 2.1.2
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/.auroq-core/core-config.yaml +1 -1
- package/.claude/commands/AuroqOS/agents/ops.md +39 -66
- package/docs/stories/AUROQ-2.1.0-hybrid-runtime.md +2 -0
- package/package.json +1 -1
- package/tests/installer-hybrid.test.mjs +15 -0
- package/tests/sync-codex-skills.test.mjs +2 -2
- package/.claude/commands/auroq-squad-edicao-arcane.md +0 -7
|
@@ -42,7 +42,7 @@ persona:
|
|
|
42
42
|
7. Atualizar o Pack Arcane — atualizar os squads de marketing (update-packarcane)
|
|
43
43
|
8. Checar saude — diagnostico completo do ambiente
|
|
44
44
|
9. Setup do nucleo — bootstrap do zero (ambiente, MCPs, GitHub, Vercel, Supabase, Companion)
|
|
45
|
-
10. Conexoes extras — bootstrap-2 (opcional, recomendado):
|
|
45
|
+
10. Conexoes extras — bootstrap-2 (opcional, recomendado): Cloudflare, Drive, Gmail, Calendar, Notion, Canva
|
|
46
46
|
|
|
47
47
|
O que precisa?
|
|
48
48
|
|
|
@@ -62,7 +62,7 @@ commands:
|
|
|
62
62
|
- name: bootstrap
|
|
63
63
|
description: "Setup do nucleo (Bootstrap 1) — ambiente, MCPs, GitHub, Vercel, Supabase, Companion"
|
|
64
64
|
- name: bootstrap-2
|
|
65
|
-
description: "Conexoes extras (Bootstrap 2, opcional recomendado) —
|
|
65
|
+
description: "Conexoes extras (Bootstrap 2, opcional recomendado) — valida o cofre e conecta Cloudflare, Drive, Gmail, Calendar, Notion e Canva"
|
|
66
66
|
- name: yolo
|
|
67
67
|
description: "Trocar modo de permissao do Claude Code (auto/acceptEdits/default)"
|
|
68
68
|
- name: install
|
|
@@ -270,7 +270,9 @@ npx arcane-pack update
|
|
|
270
270
|
O CLI faz tudo: autentica (mesma credencial do Auroq em `~/.arcane/credentials.json`), compara as versoes dos squads instalados em `agents/` com o manifest do servidor, atualiza os desatualizados por **MERGE ADITIVO** (nunca apaga dados do expert) e instala todos os squads novos. **Um comando so traz tudo** — sem distincao de core/extras.
|
|
271
271
|
|
|
272
272
|
**Passo 2 — Reportar**
|
|
273
|
-
|
|
273
|
+
1. Confirmar que o CLI mostrou "Skills locais do Codex regeneradas e verificadas".
|
|
274
|
+
2. Se a ponte Codex estiver ausente, atualizar primeiro o Auroq OS para v2.1.1+ e repetir o Pack.
|
|
275
|
+
3. Mostrar o resultado pro expert: squads atualizados, instalados, preservados e disponiveis no Claude Code/Codex na proxima sessao.
|
|
274
276
|
|
|
275
277
|
**Observacao:** depende do pacote `arcane-pack` (npm) e dos endpoints da plataforma estarem no ar. Enquanto nao estiverem, o comando avisa que o Pack ainda nao esta disponivel — nao quebra nada.
|
|
276
278
|
|
|
@@ -799,7 +801,8 @@ REGRAS DO FECHO:
|
|
|
799
801
|
- NAO revelar o comando de ativacao do Companion aqui. A plataforma faz isso no momento certo (First Win).
|
|
800
802
|
- Dizer "num chat novo" — as configuracoes (MCPs, comandos, CLAUDE.md) so carregam na abertura de um chat novo.
|
|
801
803
|
- Direcionar SEMPRE de volta pra plataforma. O bootstrap (Ops) entrega a maquina; a jornada (plataforma) conduz a experiencia.
|
|
802
|
-
-
|
|
804
|
+
- O sistema de senhas e credenciais (1Password ou vault local) e tratado no Step proprio da plataforma, depois deste bootstrap e antes do `*bootstrap-2`.
|
|
805
|
+
- As conexoes extras (Cloudflare, Drive, Gmail, Calendar, Notion, Canva) NAO entram aqui — sao o `*bootstrap-2` (opcional, recomendado), que o expert roda quando precisar. A plataforma chama na hora certa.
|
|
803
806
|
|
|
804
807
|
---
|
|
805
808
|
|
|
@@ -841,69 +844,39 @@ Conexoes extras — OPCIONAL, RECOMENDADO. Roda depois do bootstrap principal, q
|
|
|
841
844
|
|
|
842
845
|
**Mesmas regras do bootstrap principal:** uma coisa por vez, linguagem de leigo (nunca assumir que ele sabe termo tecnico), Ops FAZ / expert aprova, detectar Mac vs Windows, e GATE DE VERIFICACAO — nunca dizer "conectado" sem rodar o teste real.
|
|
843
846
|
|
|
847
|
+
**PRE-GATE OBRIGATORIO — sistema de senhas e credenciais:** antes de listar ou conectar qualquer servico, verificar como as credenciais serao armazenadas. O 1Password agora e configurado no Step anterior da plataforma; o Bootstrap 2 NAO ensina nem executa essa configuracao.
|
|
848
|
+
|
|
849
|
+
1. Perguntar: **"Voce concluiu o Step Sistema de Senhas e Credenciais e conectou o 1Password ao Auroq?"**
|
|
850
|
+
2. SE responder sim, verificar sem expor segredos:
|
|
851
|
+
- `op --version` funciona
|
|
852
|
+
- o vault `Claude` aparece em `op vault list`
|
|
853
|
+
- `OP_SERVICE_ACCOUNT_TOKEN` esta definido, mostrando somente `configurado` ou `ausente` — NUNCA imprimir o valor
|
|
854
|
+
- uma leitura de item de teste no vault funciona, quando existir
|
|
855
|
+
3. SE a verificacao passar: definir o modo desta execucao como **`1password`**. Toda nova credencial sensivel deve ser salva no vault `Claude`; em `business/vault/`, guardar apenas metadados/status e referencias `op://...`, nunca o valor.
|
|
856
|
+
4. SE nao configurou ou a verificacao falhar, explicar as duas opcoes e pedir uma escolha explicita:
|
|
857
|
+
- **Voltar ao Step anterior e configurar o 1Password (RECOMENDADO):** parar o Bootstrap 2 sem marcar conexoes como concluidas. Quando o aluno voltar, repetir este pre-gate.
|
|
858
|
+
- **Seguir com vault local (MENOS SEGURO):** continuar usando `business/vault/`, que fica fora do git, deixando claro que as credenciais permanecem em texto local e devem ser migradas depois.
|
|
859
|
+
5. Registrar somente a escolha e o estado em `business/vault/credential-storage.md`: `mode: 1password` ou `mode: local`, data e verificacoes realizadas. NUNCA registrar token, senha ou chave nesse arquivo quando o modo for 1Password.
|
|
860
|
+
|
|
861
|
+
**POLITICA DURANTE TODO O BOOTSTRAP 2:**
|
|
862
|
+
- Modo `1password`: salvar segredos novos diretamente no vault `Claude`, com nome claro por servico. Nao pedir que o aluno cole segredo no chat e nao ecoar valores no output. Arquivos locais recebem apenas referencia `op://Claude/...` e status.
|
|
863
|
+
- Modo `local`: salvar em `business/vault/{servico}.md`, garantir que `business/vault/` esta no `.gitignore` e lembrar no relatorio final que esse modo e menos seguro.
|
|
864
|
+
- OAuth/MCP sem chave manual: registrar apenas status e identificador da conexao; nao inventar credencial.
|
|
865
|
+
- Se a escolha de armazenamento estiver indefinida, NAO iniciar nenhuma conexao que gere ou solicite segredo.
|
|
866
|
+
|
|
844
867
|
**Menu:**
|
|
845
|
-
1. **
|
|
846
|
-
2. **
|
|
847
|
-
3. **
|
|
848
|
-
4. **
|
|
849
|
-
5. **
|
|
850
|
-
6. **
|
|
851
|
-
7. **Canva** — designs
|
|
868
|
+
1. **Cloudflare** — dominio proprio
|
|
869
|
+
2. **Google Drive** — arquivos e backup
|
|
870
|
+
3. **Gmail** — ler e enviar emails
|
|
871
|
+
4. **Google Calendar** — eventos
|
|
872
|
+
5. **Notion** — paginas
|
|
873
|
+
6. **Canva** — designs
|
|
852
874
|
|
|
853
875
|
(n8n, Z-API e WhatsApp em escala NAO estao aqui — sao infra de operacao avancada, ficam na fase Turbinando da jornada.)
|
|
854
876
|
|
|
855
877
|
---
|
|
856
878
|
|
|
857
|
-
#### 1.
|
|
858
|
-
|
|
859
|
-
**O que e:** hoje tuas chaves ficam num cofre local (`business/vault/`, fora do git). Funciona pra comecar. O 1Password sobe isso pra um cofre CIFRADO — mesmo que vaze, a chave fica inutil sem a senha mestra.
|
|
860
|
-
|
|
861
|
-
**Quando vale:** quando o expert ja tem credencial sensivel em uso (Service Key do Supabase, token de pagamento, Meta).
|
|
862
|
-
|
|
863
|
-
**OPCIONAL — a escolha do expert:** ele pode **(a) configurar o 1Password** (a sequencia abaixo) ou **(b) continuar so no cofre local** (`business/vault/`, que ja funciona e protege). **O Ops PERGUNTA antes de comecar** — so segue se o expert topar. E e tudo-ou-nada: faz a sequencia completa ou fica no cofre local; meio-1Password nao serve.
|
|
864
|
-
|
|
865
|
-
**🔒 REGRA DE OURO — INEGOCIAVEL (se for configurar):**
|
|
866
|
-
- **NUNCA pedir, ver, ecoar ou colar um token/credencial no chat.** Token que aparece no chat = COMPROMETIDO (vai pro historico). Tem que ser revogado.
|
|
867
|
-
- O token vai **DIRETO no arquivo, pelo PROPRIO expert**. O Ops **prepara a linha**; o expert **cola o valor**. O Ops **nunca ve** o token.
|
|
868
|
-
- Na migracao das chaves, o Ops **NAO le os valores** do `business/vault/` pra recriar (isso jogaria a credencial no contexto). Quem move os valores e o expert.
|
|
869
|
-
|
|
870
|
-
---
|
|
871
|
-
|
|
872
|
-
**PROCESSO PADRAO (a sequencia ideal):**
|
|
873
|
-
|
|
874
|
-
1. **App desktop** — instalar o app do 1Password (1password.com/downloads — o programa, nao a extensao do navegador) e logar na conta.
|
|
875
|
-
2. **CLI `op`** — instalar (e o programa que usa a credencial no terminal): macOS `brew install 1password-cli` · Windows `winget install AgileBits.1Password.CLI` · verificar `op --version`.
|
|
876
|
-
3. **Conectar o `op` ao app** — no app: **Settings → Developer → "Integrate with 1Password CLI"** + ligar Touch ID (Mac) / Windows Hello (Win). Testar: `op vault list` (pede biometria) — listou = CLI conectado.
|
|
877
|
-
4. **Vault "Claude"** — garantir que existe o vault **Claude** (so o que o Auroq vai acessar). Criar no app se ainda nao tiver.
|
|
878
|
-
5. **Gerar o token (Service Account)** — my.1password.com → Developer → Service Accounts → Criar → dar acesso **Read + Write ao vault "Claude"** → gerar o token (`ops_...`, aparece UMA vez so, copiar na hora). **NAO precisa de plano Business.**
|
|
879
|
-
6. **Colar o token no shell SEM expor na conversa.** O Ops prepara a linha (`# export OP_SERVICE_ACCOUNT_TOKEN="COLE_AQUI"`) e o expert cola o valor de um jeito que NAO ecoa (rodar no terminal dele):
|
|
880
|
-
`read -s TOKEN && echo "export OP_SERVICE_ACCOUNT_TOKEN=\"$TOKEN\"" >> ~/.zshenv && unset TOKEN`
|
|
881
|
-
Recarregar: terminal novo ou `source ~/.zshenv`. **O Ops NUNCA ve o valor.**
|
|
882
|
-
7. **Pronto** — o Auroq usa o token (headless, so o vault Claude); o expert gerencia tudo pelo app. Testar: `op read "op://Claude/<item>/<campo>"` retorna o valor.
|
|
883
|
-
|
|
884
|
-
(Por que app + CLI **e** token: o app+CLI deixa voce gerenciar o cofre por biometria; o token Service Account e o que o agente usa pra operar sozinho, sem precisar de Touch ID a cada vez.)
|
|
885
|
-
|
|
886
|
-
---
|
|
887
|
-
|
|
888
|
-
**MIGRAR AS CHAVES (sem o Ops tocar nos valores):**
|
|
889
|
-
1. Criar o vault **"Claude"** no 1Password (so o que o Auroq pode acessar; o resto fica privado).
|
|
890
|
-
2. **O EXPERT** copia cada credencial do `business/vault/*.md` e cria o item no vault "Claude" (pelo app). O Ops diz QUAIS itens criar (ex: "Supabase — Service Key", "Vercel"), mas **NAO le nem digita os valores**.
|
|
891
|
-
3. Migrado e testado → **esvaziar** `business/vault/` (deixar so um `README.md` dizendo que as chaves vivem no 1Password).
|
|
892
|
-
|
|
893
|
-
**GATE DE VERIFICACAO (BLOCKING):**
|
|
894
|
-
1. `op --version` retorna versao (CLI instalado)
|
|
895
|
-
2. `op vault list` funciona (CLI conectado ao app)
|
|
896
|
-
3. `op read "op://Claude/<item>/<campo>"` retorna o valor (token no env funcionando)
|
|
897
|
-
4. `business/vault/` sem chave em texto plano (so o README)
|
|
898
|
-
→ SE qualquer um falhar: resolver antes de dizer "conectado".
|
|
899
|
-
|
|
900
|
-
**Nota honesta:** mesmo cifrado, na hora que o agente USA a chave ela passa pelo terminal. O 1Password resolve o ARMAZENAMENTO (nao ficar em texto plano no disco/nuvem) — que e o grosso do risco.
|
|
901
|
-
|
|
902
|
-
→ Check: "1Password conectado (A: shell / B: desktop), chaves migradas, vault local esvaziado" ou "Pulado (segue no cofre local)"
|
|
903
|
-
|
|
904
|
-
---
|
|
905
|
-
|
|
906
|
-
#### 2. Cloudflare — dominio proprio
|
|
879
|
+
#### 1. Cloudflare — dominio proprio
|
|
907
880
|
|
|
908
881
|
**O que e:** o Cloudflare gerencia teu dominio (o endereco do negocio, tipo seunegocio.com). Conectado ao Auroq, o Claude configura teu dominio sozinho — apontar pra pagina, email, DNS.
|
|
909
882
|
|
|
@@ -928,7 +901,7 @@ Conexoes extras — OPCIONAL, RECOMENDADO. Roda depois do bootstrap principal, q
|
|
|
928
901
|
|
|
929
902
|
---
|
|
930
903
|
|
|
931
|
-
####
|
|
904
|
+
#### 2. Google Drive — arquivos e backup
|
|
932
905
|
|
|
933
906
|
**IMPORTANTE:** O rclone config e INTERATIVO — ele faz perguntas no terminal que o Claude Code nao consegue responder. Por isso, o expert precisa rodar em um terminal separado.
|
|
934
907
|
|
|
@@ -968,7 +941,7 @@ Quando o expert avisar que terminou:
|
|
|
968
941
|
|
|
969
942
|
---
|
|
970
943
|
|
|
971
|
-
####
|
|
944
|
+
#### 3. Gmail
|
|
972
945
|
1. Registrar: `claude mcp add gmail -- npx gmail-mcp-server`
|
|
973
946
|
2. Informar: "Agora preciso que voce digite `/mcp` e aperte Enter aqui no chat. Isso vai puxar a conexao do Gmail e abrir o navegador pra voce autorizar."
|
|
974
947
|
3. Expert digita `/mcp` → browser abre pra autenticar com Google
|
|
@@ -979,7 +952,7 @@ Quando o expert avisar que terminou:
|
|
|
979
952
|
|
|
980
953
|
---
|
|
981
954
|
|
|
982
|
-
####
|
|
955
|
+
#### 4. Google Calendar
|
|
983
956
|
1. Instruir: "Abre claude.ai/settings no navegador, vai em Integrations, e conecta o Google Calendar. Quando terminar, volta aqui."
|
|
984
957
|
2. Quando expert voltar: "Digita `/mcp` e aperta Enter."
|
|
985
958
|
3. Expert digita `/mcp` → ferramentas do Calendar aparecem
|
|
@@ -988,7 +961,7 @@ Quando o expert avisar que terminou:
|
|
|
988
961
|
|
|
989
962
|
---
|
|
990
963
|
|
|
991
|
-
####
|
|
964
|
+
#### 5. Notion
|
|
992
965
|
1. Instruir: "Abre claude.ai/settings no navegador, vai em Integrations, e conecta o Notion. Quando terminar, volta aqui."
|
|
993
966
|
2. Quando expert voltar: "Digita `/mcp` e aperta Enter."
|
|
994
967
|
3. Expert digita `/mcp` → ferramentas do Notion aparecem
|
|
@@ -997,7 +970,7 @@ Quando o expert avisar que terminou:
|
|
|
997
970
|
|
|
998
971
|
---
|
|
999
972
|
|
|
1000
|
-
####
|
|
973
|
+
#### 6. Canva
|
|
1001
974
|
1. Instruir: "Abre claude.ai/settings no navegador, vai em Integrations, e conecta o Canva. Quando terminar, volta aqui."
|
|
1002
975
|
2. Quando expert voltar: "Digita `/mcp` e aperta Enter."
|
|
1003
976
|
3. Expert digita `/mcp` → ferramentas do Canva aparecem
|
|
@@ -60,3 +60,5 @@ Entregar o Auroq OS pronto para o aluno operar no Claude Code ou no Codex CLI, c
|
|
|
60
60
|
|
|
61
61
|
- 2026-06-09 — Story criada e implementacao iniciada.
|
|
62
62
|
- 2026-06-09 — Implementacao concluida e movida para InReview.
|
|
63
|
+
- 2026-06-09 — Patch 2.1.1 removeu wrapper orfao do Squad Edicao e integrou o sync automatico do Pack Arcane.
|
|
64
|
+
- 2026-06-10 — Patch 2.1.2 separou o Step de credenciais do Bootstrap 2 e adicionou o gate 1Password/vault local no Ops.
|
package/package.json
CHANGED
|
@@ -31,6 +31,12 @@ test('installer entrega projeto hibrido funcional sem sobrescrever package scrip
|
|
|
31
31
|
assert.ok(fs.existsSync(path.join(target, '.agents', 'skills', 'ops', 'SKILL.md')));
|
|
32
32
|
assert.equal(fs.existsSync(path.join(fakeHome, '.agents', 'skills')), false);
|
|
33
33
|
|
|
34
|
+
const installedOps = fs.readFileSync(path.join(target, '.claude', 'commands', 'AuroqOS', 'agents', 'ops.md'), 'utf8');
|
|
35
|
+
assert.match(installedOps, /PRE-GATE OBRIGATORIO — sistema de senhas e credenciais/);
|
|
36
|
+
assert.match(installedOps, /Voltar ao Step anterior e configurar o 1Password/);
|
|
37
|
+
assert.match(installedOps, /Seguir com vault local \(MENOS SEGURO\)/);
|
|
38
|
+
assert.doesNotMatch(installedOps, /#### 1\. 1Password — cofre cifrado/);
|
|
39
|
+
|
|
34
40
|
const check = execFileSync(process.execPath, [path.join(target, 'scripts', 'sync-codex-skills.mjs'), '--check'], {
|
|
35
41
|
cwd: os.tmpdir(),
|
|
36
42
|
encoding: 'utf8',
|
|
@@ -42,6 +48,15 @@ test('installer entrega projeto hibrido funcional sem sobrescrever package scrip
|
|
|
42
48
|
encoding: 'utf8',
|
|
43
49
|
});
|
|
44
50
|
assert.match(validation, /Validacao hibrida passou \(9 comandos descobertos\)/);
|
|
51
|
+
|
|
52
|
+
fs.writeFileSync(path.join(target, '.claude', 'commands', 'squad-anuncios-arcane.md'), `# squad-anuncios-arcane
|
|
53
|
+
|
|
54
|
+
CRITICAL: Read and execute \`agents/squad-anuncios-arcane/tasks/start.md\`.
|
|
55
|
+
`);
|
|
56
|
+
fs.mkdirSync(path.join(target, 'agents', 'squad-anuncios-arcane', 'tasks'), { recursive: true });
|
|
57
|
+
fs.writeFileSync(path.join(target, 'agents', 'squad-anuncios-arcane', 'tasks', 'start.md'), '# Start\n');
|
|
58
|
+
execFileSync(process.execPath, [path.join(target, 'scripts', 'sync-codex-skills.mjs'), '--clean'], { cwd: target });
|
|
59
|
+
assert.ok(fs.existsSync(path.join(target, '.agents', 'skills', 'squad-anuncios-arcane', 'SKILL.md')));
|
|
45
60
|
} finally {
|
|
46
61
|
fs.rmSync(target, { recursive: true, force: true });
|
|
47
62
|
fs.rmSync(fakeHome, { recursive: true, force: true });
|
|
@@ -23,12 +23,12 @@ test('sync global e portavel, deterministico e preserva skills externas', () =>
|
|
|
23
23
|
fs.mkdirSync(path.join(out, 'externa'), { recursive: true });
|
|
24
24
|
fs.writeFileSync(path.join(out, 'externa', 'SKILL.md'), 'externa\n');
|
|
25
25
|
const first = run(home, ['--global', '--clean'], os.tmpdir());
|
|
26
|
-
assert.match(first, /
|
|
26
|
+
assert.match(first, /9 skills sincronizadas/);
|
|
27
27
|
assert.equal(fs.readFileSync(path.join(out, 'externa', 'SKILL.md'), 'utf8'), 'externa\n');
|
|
28
28
|
assert.ok(fs.existsSync(path.join(out, 'companion', 'SKILL.md')));
|
|
29
29
|
assert.ok(fs.existsSync(path.join(out, 'ops', 'SKILL.md')));
|
|
30
30
|
assert.match(fs.readFileSync(path.join(out, 'companion', 'SKILL.md'), 'utf8'), new RegExp(root.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')));
|
|
31
|
-
assert.match(run(home, ['--global', '--check']), /
|
|
31
|
+
assert.match(run(home, ['--global', '--check']), /9 skills verificadas/);
|
|
32
32
|
const snapshot = fs.readFileSync(path.join(out, 'ops', 'SKILL.md'), 'utf8');
|
|
33
33
|
run(home, ['--global', '--clean']);
|
|
34
34
|
assert.equal(fs.readFileSync(path.join(out, 'ops', 'SKILL.md'), 'utf8'), snapshot);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# squad-edicao-arcane
|
|
2
|
-
|
|
3
|
-
Edita video bruto talking-head pra Reels/Shorts: corte por fala (Silero VAD agressivo), aceleracao 1.25x mantendo pitch, legenda estilo viral (Bebas Neue, 2 linhas branco+amarelo). 5 agents com quality gates entre handoffs.
|
|
4
|
-
|
|
5
|
-
CRITICAL: First, read and adopt the persona defined in `agents/squad-edicao-arcane/agents/chief.md`.
|
|
6
|
-
Then, read and execute the task defined in `agents/squad-edicao-arcane/tasks/start.md`.
|
|
7
|
-
Follow ALL instructions exactly as written. Those files are your single source of truth.
|