iron-edge 2.0.0 → 2.0.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Iron Edge — Ecossistema de Agentes para Claude Code
2
2
 
3
- **44 agentes de topo, 18 squads, 14 skills e sistema de memória integrado.**
3
+ **44 agentes de topo, 18 squads, 14 skills e memória entre sessões.**
4
4
 
5
5
  Uma equipe completa de IA para marketing, vendas, conteúdo, Shopify, vídeo e crescimento — tudo dentro do Claude Code.
6
6
 
@@ -16,7 +16,11 @@ Isso instala automaticamente:
16
16
  - 44 agentes em `~/.claude/agents/`
17
17
  - Skills premium em `~/.claude/skills/`
18
18
  - Base de conhecimento em `~/.iron/`
19
- - Sistema de configuração e memória
19
+ - A configuração em `~/.iron/config.yaml`
20
+
21
+ **Sobre a memória, sem enrolação:** o Iron guarda o que importa entre uma conversa e outra — quem você é, seus projetos, o que ficou pendente. Mas ela **não vem pronta**: é uma pasta sua, no seu disco, que ele monta quando você pedir. Depois de instalar, diga **"cria meu cofre"** e ele faz em um minuto, no lugar que você escolher. Enquanto você não fizer isso, cada conversa começa do zero.
22
+
23
+ São arquivos `.md` comuns — abrem no Obsidian, no VS Code ou em qualquer editor. Nada é enviado para lugar nenhum.
20
24
 
21
25
  ---
22
26
 
@@ -49,9 +53,9 @@ menção explícita, a forma que resolve é **`@agent-iron-ceo`** (com o prefixo
49
53
  `@iron-ceo` sozinho não é documentado). O Claude Code também escolhe o agente sozinho quando o
50
54
  pedido é claro; nomear é só para ter certeza de qual.
51
55
 
52
- > Isto foi corrigido em 24/08/2026. Até essa data o README mandava digitar `/iron-ceo`, o que
53
- > nunca funcionou: o pacote não cria `~/.claude/commands/`. Se você seguiu a versão antiga e achou
54
- > que a instalação tinha falhado, ela não tinha.
56
+ > Se você viu em algum lugar a instrução de digitar `/iron-ceo`, ela está desatualizada — isso
57
+ > nunca funcionou, porque o pacote não cria `~/.claude/commands/`. Sua instalação não tem defeito.
58
+ > Para conferir que está tudo no lugar: `npx iron-edge verify`.
55
59
 
56
60
  **Squads — o terceiro nível, e você não chama direto.** São 18 equipes que vivem em `~/.iron/`.
57
61
  Cada uma tem um agente de topo, e é por ele que se entra:
@@ -195,7 +199,6 @@ Seus dados ficam locais em `~/.iron/`. Sobre o que sai da sua máquina, com prec
195
199
  - **Para a internet aberta**, através das ferramentas do próprio Claude Code (`WebSearch` / `WebFetch`), vão as buscas de **41 dos 44 agentes** — é como o `iron-research` pesquisa mercado e o `iron-spy` lê a biblioteca de anúncios. Isso passa pelo Claude Code, com a visibilidade e a aprovação que ele te dá; não é canal deste pacote. Confira: `grep -rln "WebSearch\|WebFetch" ~/.claude/agents/`.
196
200
  - **A skill `clone-site`** baixa a URL que você mandar clonar. É o trabalho dela.
197
201
 
198
- *(Até 24/08/2026 este parágrafo dizia "nenhum outro agente do pacote fala com a rede". Era falso — 41 deles pesquisam na web — e a frase foi escrita, ironicamente, numa correção de exagero. Os números acima são medidos, e a regra R19 do lint confere os do README contra o disco.)*
199
202
 
200
203
  Sendo exato sobre a força dessa garantia, porque ela não é um sandbox: cada bloco que chama o Iron Office começa com uma guarda (`[ -z "$IRON_KEY" ] && exit 0`) e a regra R20 do lint impede que qualquer bloco novo entre sem ela. Mas esses arquivos são **instruções lidas por um modelo**, não um binário fechado: um agente que execute só a linha do `curl`, isolada da guarda, não é barrado por nada aqui. Se o que você quer é garantia dura, a que existe é não criar o arquivo de chave — sem ele, não há para onde enviar, e todo bloco para na guarda.
201
204
 
@@ -26,9 +26,24 @@ Enquanto ele estiver assim, tudo que eu responder vai sair genérico.
26
26
 
27
27
  Quer preencher agora? Leva 2 minutos: seu nome, o que você faz,
28
28
  e os negócios ou projetos em que o Iron vai trabalhar com você.
29
+
30
+ E tem uma segunda coisa, que vale mais: sem um COFRE, eu esqueço tudo
31
+ quando esta conversa fechar. O cofre é uma pasta de arquivos .md na sua
32
+ máquina onde eu guardo seus projetos e o que ficou pendente. Diga
33
+ "cria meu cofre" e eu monto no lugar que você escolher.
29
34
  ```
30
35
 
31
- **2. Se houver `vault_path` no config**, leia a partir dele:
36
+ **Se `vault_path` estiver vazio ou ausente**, ofereça o cofre uma vez, do jeito acima, e siga trabalhando se ele recusar. Não insista a cada mensagem: uma oferta por sessão. Quando ele aceitar, use a skill `salvar` (seção 0) para montar.
37
+
38
+ **2. Se houver `vault_path` no config**, leia a partir dele.
39
+
40
+ > ⚠️ **Nome antigo do campo.** Instalações anteriores a 24/08/2026 gravavam esse caminho como
41
+ > **`obsidian_vault_path`**. Se `vault_path` estiver ausente mas `obsidian_vault_path` existir,
42
+ > **use o valor dele** — é o mesmo cofre, com o mesmo conteúdo. Avise o usuário em uma linha e
43
+ > ofereça renomear o campo para `vault_path`. Nunca trate o cofre como inexistente só porque o
44
+ > campo tem o nome antigo: isso faria o Iron oferecer criar um cofre novo a quem já tem um cheio.
45
+
46
+ Do cofre, leia:
32
47
  - `INDICE.md` — o mapa do cofre
33
48
  - `00 Sobre mim.md` — quem é o usuário e como ele trabalha
34
49
  - `memoria/historico.md` — as últimas sessões e os próximos passos
@@ -276,6 +276,12 @@ Se esta maquina JA TEM uma instalacao do Iron Edge, isso e esperado: esta versao
276
276
  nao instala por cima, para nada seu ser perdido.
277
277
 
278
278
  Como resolver sozinho, sem depender de ninguem:
279
+ Primeiro descubra qual dos dois casos e o seu:
280
+
281
+ ls ~/.iron/install-manifest.json
282
+
283
+ CASO A - o arquivo EXISTE (instalacao feita por este instalador).
284
+ Da pra separar o que e seu por lista:
279
285
  1. COPIE o manifesto para fora ANTES de apagar qualquer coisa (a lista do que
280
286
  remover mora dentro da pasta que vai sumir):
281
287
  cp ~/.iron/install-manifest.json ./iron-manifest.json
@@ -287,6 +293,29 @@ Como resolver sozinho, sem depender de ninguem:
287
293
  lista. Depois, POR ULTIMO, apague a pasta ~/.iron inteira.
288
294
  5. Rode a instalacao de novo.
289
295
 
296
+ CASO B - o arquivo NAO EXISTE (instalacao anterior ao manifesto, veio de zip).
297
+ Sem a lista nao da pra separar por nome — entao NAO SEPARE: mova tudo pro lado.
298
+ Nada e apagado, e da pra voltar atras a qualquer momento.
299
+ 1. Mova as pastas antigas, com data no nome:
300
+ mv ~/.claude/agents ~/.claude/agents-antes-2.0
301
+ mv ~/.claude/skills ~/.claude/skills-antes-2.0
302
+ mv ~/.iron ~/.iron-antes-2.0
303
+ 2. Rode a instalacao de novo. Agora ela nao vai achar conflito.
304
+ 3. Depois de instalar, traga de volta SO o que era seu, olhando as pastas
305
+ "-antes-2.0": agente que voce escreveu, skill sua, e o conteudo do seu
306
+ cofre. O que veio do pacote antigo NAO precisa voltar: a versao nova
307
+ ja traz tudo, mais novo.
308
+ 4. Quando tiver certeza de que nao falta nada, apague as pastas "-antes-2.0".
309
+ Enquanto elas existirem, sua instalacao antiga esta inteira e intacta.
310
+
311
+ Windows: no Claude Code, o prefixo "!" cai no Git Bash, entao os comandos
312
+ acima funcionam como estao. Fora dele, no PowerShell, troque "mv" por "move".
313
+
314
+ ATENCAO: seu COFRE (a pasta de memoria com seus projetos) normalmente NAO fica
315
+ em nenhuma dessas pastas — ele fica onde voce escolheu, e o caminho esta no
316
+ campo vault_path do ~/.iron/config.yaml. Anote esse caminho antes de mover
317
+ qualquer coisa, e confira depois que ele continua la.
318
+
290
319
  Se os conflitos acima NAO batem com uma instalacao que voce reconhece, pode ser
291
320
  sobra de uma instalacao que falhou no meio. Nesse caso os arquivos listados sao
292
321
  lixo e podem ser removidos.`);
@@ -417,6 +446,28 @@ log(` ${manifest.length} arquivos copiados.`);
417
446
 
418
447
  for (const d of [path.join(IRON_DIR, 'integrations'), path.join(IRON_DIR, 'secrets')]) {
419
448
  criarPasta(d, 'as pastas de estado');
449
+
450
+ // As duas pastas nascem vazias e com nome que gera duvida ("secrets" assusta quem vai por
451
+ // dado de negocio). Um LEIAME em cada uma explica pra que servem — pasta vazia sem
452
+ // explicacao foi achado de um leitor sem contexto nenhum.
453
+ escrever(path.join(IRON_DIR, 'secrets', 'LEIA-ME.md'), [
454
+ '# secrets/',
455
+ '',
456
+ 'Pasta para as SUAS credenciais, se um dia voce conectar alguma integracao.',
457
+ '**Ela nasce vazia e o Iron nao escreve nada aqui sozinho.**',
458
+ '',
459
+ 'Nada nesta pasta e enviado para lugar nenhum: e arquivo no seu disco, como',
460
+ 'qualquer outro. Se voce nunca conectar integracao, ela fica vazia para sempre —',
461
+ 'e pode apagar sem quebrar nada.',
462
+ ''
463
+ ].join('\n'), 'o LEIA-ME de secrets');
464
+ escrever(path.join(IRON_DIR, 'integrations', 'LEIA-ME.md'), [
465
+ '# integrations/',
466
+ '',
467
+ 'Configuracao das integracoes opcionais (por enquanto, so o Shopify via Iron Office).',
468
+ 'O `shopify.yaml` nasce com `enabled: false`: nada e ligado sem voce ligar.',
469
+ ''
470
+ ].join('\n'), 'o LEIA-ME de integrations');
420
471
  }
421
472
 
422
473
  // memoria por cargo do squad-engineering: pasta vazia, FORA do manifesto de propósito.
@@ -429,11 +480,26 @@ escrever(shopifyYaml, 'enabled: false\nendpoint: ""\napi_key_file: ""\n', 'a con
429
480
 
430
481
  const configYaml = path.join(IRON_DIR, 'config.yaml');
431
482
  escrever(configYaml, [
432
- '# Iron Edge config (gerado na instalacao, em branco)',
433
- 'owner: ""',
434
- 'businesses: []',
435
- '# focus: dev # prioriza o iron-eng (engenharia de software) no roteamento.',
436
- '# # a skill recorte preenche este campo; deixe comentado ate escolher.',
483
+ '# Iron Edge - configuracao. Tudo aqui e opcional, mas os dois primeiros blocos mudam',
484
+ '# muito a qualidade da resposta. Edite a mao, ou peca ao Iron: "configura o Iron pra mim".',
485
+ '',
486
+ '# QUEM E VOCE. Sem isto, tudo que o Iron responder sai generico.',
487
+ 'owner: "" # seu nome',
488
+ 'businesses: [] # ex: ["loja de roupa", "consultoria de trafego"]',
489
+ '',
490
+ '# O COFRE - a memoria do Iron entre uma conversa e outra.',
491
+ '#',
492
+ '# SEM cofre, cada conversa comeca do zero: o Iron nao lembra dos seus projetos, do que',
493
+ '# ficou pendente, nem do que voce decidiu ontem. COM cofre, ele le tudo isso antes de',
494
+ '# trabalhar. E uma pasta de arquivos .md comuns, na SUA maquina - abre no Obsidian, no',
495
+ '# VS Code ou em qualquer editor. Nada e enviado pra lugar nenhum.',
496
+ '#',
497
+ '# Ainda nao tem? Peca ao Iron: "cria meu cofre". Ele monta a estrutura no lugar que',
498
+ '# voce escolher e preenche este campo sozinho. Leva um minuto.',
499
+ 'vault_path: "" # ex: ~/Documents/Cofre',
500
+ '',
501
+ '# focus: dev # prioriza o iron-eng (engenharia de software) no roteamento.',
502
+ '# # descomente se o seu uso principal for programar.',
437
503
  ''
438
504
  ].join('\n'), 'a config inicial');
439
505
 
@@ -511,8 +577,21 @@ log(`Manifesto: ${manifestPath}`);
511
577
  log('\n--------------------------------');
512
578
  log(' PROXIMO PASSO');
513
579
  log('--------------------------------');
514
- log('1. Reabra o Claude Code (pra ele carregar os novos agentes).');
515
- log('2. Comece pelo iron-ceo: peca algo como');
516
- log(' "ative o iron-ceo" ou "chame o iron-ceo".');
517
- log('3. Se o iron-ceo responder com a saudacao, esta funcionando.');
580
+ log('1. Reabra o Claude Code. Agente novo so aparece em sessao nova.');
581
+ log('');
582
+ log('2. Chame o orquestrador PEDINDO, em portugues:');
583
+ log('');
584
+ log(' usa o iron-ceo');
585
+ log('');
586
+ log(' (Agente nao e comando de barra. As 14 SKILLS sim: /gate /salvar /brandkit ...)');
587
+ log('');
588
+ log('3. Ligue a memoria. Diga a ele:');
589
+ log('');
590
+ log(' cria meu cofre');
591
+ log('');
592
+ log(' O cofre e uma pasta de arquivos .md na SUA maquina, onde o Iron guarda quem');
593
+ log(' voce e, seus projetos e o que ficou pendente. SEM ele, cada conversa comeca');
594
+ log(' do zero. Com ele, o Iron abre a sessao ja sabendo em que pe as coisas estao.');
595
+ log(' Nada e enviado pra lugar nenhum: e arquivo seu, no seu disco.');
596
+ log(' Se preferir fazer depois, e so pedir a qualquer momento.');
518
597
  log('');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iron-edge",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "Ecossistema de agentes para Claude Code: 44 agentes de topo, 18 squads e 14 skills, com quality gate, memoria e instalador que nunca sobrescreve.",
5
5
  "keywords": [
6
6
  "claude",
@@ -1,14 +1,26 @@
1
1
  ---
2
2
  name: salvar
3
- description: Rotina de encerramento de sessão do Iron Edge. Quando o usuário escrever "salvar" ou "encerrar" (sozinho, como mensagem), executar imediatamente sem perguntar nada — registrar no diário do cofre o que foi feito, atualizar a folha do projeto se o estado mudou, atualizar a memória persistente e confirmar em uma linha. Também dispara em variações claras como "salva a sessão", "registra e encerra", "fecha por hoje".
3
+ description: Memoria do Iron Edge, com DOIS gatilhos. (1) CRIAR O COFRE: em "cria meu cofre", "criar cofre", "configura minha memoria", "quero memoria entre sessoes" ou equivalente, execute SO a secao 0 (monta a estrutura no lugar que o usuario escolher, grava vault_path em ~/.iron/config.yaml) e pare ali. (2) ENCERRAR: em "salvar", "encerrar", "salva a sessao", "registra e encerra", "fecha por hoje", execute a rotina completa sem perguntar nada — diario do cofre, folha do projeto se o estado mudou, memoria persistente, e confirma em uma linha.
4
4
  ---
5
5
 
6
6
  # salvar — registro de sessão
7
7
 
8
8
  O trabalho que não foi registrado não aconteceu: a próxima sessão nasce sem memória do que esta fez. Esta rotina é o que transforma sessões soltas num sistema.
9
9
 
10
+ ## Dois jeitos de entrar aqui
11
+
12
+ - **"cria meu cofre"** (ou "configura minha memoria") → faca **so a secao 0** abaixo: monte a
13
+ estrutura no lugar que o usuario escolher, grave o `vault_path` no `~/.iron/config.yaml`,
14
+ confirme em uma linha e **pare**. Nao registre sessao nenhuma: nao ha o que registrar ainda.
15
+ - **"salvar"** ou **"encerrar"** → a rotina completa, da secao 0 em diante.
16
+
10
17
  ## 0. Onde fica o cofre
11
18
 
19
+ > ⚠️ **Antes de concluir que não há cofre:** instalações anteriores a 24/08/2026 gravavam o
20
+ > caminho no campo **`obsidian_vault_path`**, não em `vault_path`. Se o segundo estiver vazio,
21
+ > procure o primeiro antes de oferecer criar um cofre novo — a pessoa pode já ter um, cheio.
22
+
23
+
12
24
  O cofre é a pasta de memória do usuário — arquivos Markdown simples, que ele pode abrir no Obsidian ou em qualquer editor. O caminho está em `~/.iron/config.yaml`, campo `vault_path`.
13
25
 
14
26
  **Se o campo estiver vazio ou a pasta não existir**, ofereça criar agora, em um lugar que o usuário escolher (sugira `~/Documents/Cofre <Nome>/`). A estrutura mínima: