iron-edge 2.0.1 → 2.1.0

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
@@ -40,7 +40,7 @@ Existem **duas coisas diferentes** aqui, e elas se chamam de jeitos diferentes.
40
40
  (As outras: `anotar`, `faxina`, `conectar-mcp`, `roteiro-video`, `lp-cinematico`, `clone-site`,
41
41
  `clone-inventory`, `clone-distill`, `clone-organize`, `clone-transplant`.)
42
42
 
43
- **Agentes — esses NÃO são comando de barra.** São 44, e você os chama **pedindo em português**:
43
+ **Agentes — esses você chama pedindo.** São 44:
44
44
 
45
45
  ```
46
46
  "usa o iron-ceo" ← comece por aqui, ele direciona
@@ -48,14 +48,27 @@ Existem **duas coisas diferentes** aqui, e elas se chamam de jeitos diferentes.
48
48
  "quero o iron-shopify nessa loja"
49
49
  ```
50
50
 
51
+ **E tem um atalho, que é como se usa no dia a dia.** A instalação cria o `iron`, e você o chama
52
+ escrevendo só a palavra:
53
+
54
+ ```
55
+ iron ← ativa e pergunta o que você precisa
56
+ iron preciso da copy desse anúncio ← já entra com o pedido
57
+ ```
58
+
59
+ **Sem barra e sem traço.** Se você preferir a barra, `/iron` faz exatamente o mesmo — ela é o
60
+ atalho explícito da interface, não uma exigência. As três formas (`iron`, `/iron`,
61
+ `"usa o iron-ceo"`) chegam no mesmo lugar.
62
+
63
+ Os outros 43 agentes continuam sendo chamados pedindo. O pacote instala **um** atalho, não 44.
64
+
51
65
  Digitar `/iron-ceo` **não funciona** — barra é para skill, e agente não é skill. Se quiser a
52
66
  menção explícita, a forma que resolve é **`@agent-iron-ceo`** (com o prefixo `agent-`; o
53
67
  `@iron-ceo` sozinho não é documentado). O Claude Code também escolhe o agente sozinho quando o
54
68
  pedido é claro; nomear é só para ter certeza de qual.
55
69
 
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`.
70
+ > Se você viu em algum lugar a instrução de digitar `/iron-ceo`, ela está desatualizada: o atalho
71
+ > se chama **`/iron`**. Sua instalação não tem defeito. Para conferir: `npx iron-edge verify`.
59
72
 
60
73
  **Squads — o terceiro nível, e você não chama direto.** São 18 equipes que vivem em `~/.iron/`.
61
74
  Cada uma tem um agente de topo, e é por ele que se entra:
@@ -164,7 +177,7 @@ O instalador **nunca sobrescreve** o que já está em `~/.claude/` e em `~/.iron
164
177
  cp ~/.iron/install-manifest.json ./iron-manifest.json
165
178
  ```
166
179
  (Guarda na pasta em que você está. `~/Desktop` nem sempre existe — em servidor e container, não existe.)
167
- 2. Abra essa cópia e olhe o campo `files` — é a lista exata do que o pacote escreveu em `~/.claude/agents/` e `~/.claude/skills/`.
180
+ 2. Abra essa cópia e olhe o campo `files` — é a lista exata do que o pacote escreveu em `~/.claude/agents/`, `~/.claude/skills/` e `~/.claude/commands/`.
168
181
  3. Apague **só** esses arquivos. O que você criou não está na lista e fica.
169
182
  4. **Por último**, apague a pasta `~/.iron/` inteira.
170
183
 
@@ -35,7 +35,15 @@ máquina onde eu guardo seus projetos e o que ficou pendente. Diga
35
35
 
36
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
37
 
38
- **2. Se houver `vault_path` no config**, leia a partir dele:
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:
39
47
  - `INDICE.md` — o mapa do cofre
40
48
  - `00 Sobre mim.md` — quem é o usuário e como ele trabalha
41
49
  - `memoria/historico.md` — as últimas sessões e os próximos passos
@@ -58,8 +58,9 @@ const IRON_DIR = path.join(HOME, '.iron');
58
58
  const CLAUDE_DIR = path.join(HOME, '.claude');
59
59
  const AGENTS_DEST = path.join(CLAUDE_DIR, 'agents');
60
60
  const SKILLS_DEST = path.join(CLAUDE_DIR, 'skills');
61
+ const COMMANDS_DEST = path.join(CLAUDE_DIR, 'commands');
61
62
 
62
- const ALLOWED_ROOTS = [IRON_DIR, AGENTS_DEST, SKILLS_DEST];
63
+ const ALLOWED_ROOTS = [IRON_DIR, AGENTS_DEST, SKILLS_DEST, COMMANDS_DEST];
63
64
 
64
65
  const WIN_RESERVED = new Set([
65
66
  'CON','PRN','AUX','NUL',
@@ -289,7 +290,7 @@ Da pra separar o que e seu por lista:
289
290
  O que NAO estiver la foi voce que criou.
290
291
  3. Guarde o que for seu (agente proprio, skill propria, o que voce editou).
291
292
  "npx iron-edge verify" mostra o que voce alterou em relacao ao manifesto.
292
- 4. Apague em ~/.claude/agents e ~/.claude/skills SO os arquivos que estao na
293
+ 4. Apague em ~/.claude/agents, ~/.claude/skills e ~/.claude/commands SO os que estao na
293
294
  lista. Depois, POR ULTIMO, apague a pasta ~/.iron inteira.
294
295
  5. Rode a instalacao de novo.
295
296
 
@@ -518,7 +519,7 @@ const installManifest = {
518
519
  platform: process.platform,
519
520
  node: process.version,
520
521
  home: HOME,
521
- scopes: { iron_root: IRON_DIR, claude_agents: AGENTS_DEST, claude_skills: SKILLS_DEST },
522
+ scopes: { iron_root: IRON_DIR, claude_agents: AGENTS_DEST, claude_skills: SKILLS_DEST, claude_commands: COMMANDS_DEST },
522
523
  files: manifest // sera reescrito abaixo ja com os gerados
523
524
  };
524
525
 
@@ -526,6 +527,35 @@ const installManifest = {
526
527
  addGenerated(shopifyYaml);
527
528
  addGenerated(configYaml);
528
529
 
530
+ // O ATALHO /iron — o pedido mais repetido de quem usa o Iron todo dia.
531
+ //
532
+ // Ele NAO e' copia do agente. A maquina de quem desenvolve tinha um commands/iron.md com o
533
+ // texto INTEIRO do iron-ceo dentro: 158 linhas duplicadas, que hoje batem por sorte e amanha
534
+ // divergem em silencio. Copia e' o defeito de propagacao que este pacote passou um ciclo
535
+ // inteiro caçando. Aqui o comando so' APONTA pro agente — uma fonte de verdade, e o /iron
536
+ // acompanha qualquer mudanca no iron-ceo.md sem ninguem lembrar de sincronizar.
537
+ const ironCmd = path.join(COMMANDS_DEST, 'iron.md');
538
+ escrever(ironCmd, [
539
+ '---',
540
+ 'description: Iron Edge - chama o orquestrador master. Ele entende o pedido, decide qual equipe resolve e aciona os especialistas certos.',
541
+ '---',
542
+ '',
543
+ 'Leia o arquivo `~/.claude/agents/iron-ceo.md` por inteiro e assuma aquele papel agora,',
544
+ 'seguindo a sequencia de ativacao descrita la (ler o config, ler o cofre se houver, ler o',
545
+ 'mapa de roteamento, e so entao saudar).',
546
+ '',
547
+ 'Nao resuma o arquivo nem trabalhe de memoria: leia o conteudo real, porque ele muda quando',
548
+ 'o pacote e atualizado.',
549
+ '',
550
+ 'Pedido do usuario: $ARGUMENTS',
551
+ '',
552
+ '(Sem pedido depois do comando, apenas ative e pergunte qual e a missao.)',
553
+ '',
554
+ 'Este atalho atende tanto por `/iron` quanto pela palavra `iron` sozinha.',
555
+ ''
556
+ ].join('\n'), 'o atalho /iron');
557
+ addGenerated(ironCmd);
558
+
529
559
  const metadataPath = path.join(IRON_DIR, 'metadata.json');
530
560
  escrever(metadataPath,
531
561
  JSON.stringify({ version: IRON_VERSION, label: IRON_VERSION_HUMAN, installed_at: installedAt, platform: process.platform }, null, 2),
@@ -579,11 +609,15 @@ log(' PROXIMO PASSO');
579
609
  log('--------------------------------');
580
610
  log('1. Reabra o Claude Code. Agente novo so aparece em sessao nova.');
581
611
  log('');
582
- log('2. Chame o orquestrador PEDINDO, em portugues:');
612
+ log('2. Chame o orquestrador. Escreva so isto:');
613
+ log('');
614
+ log(' iron');
583
615
  log('');
584
- log(' usa o iron-ceo');
616
+ log(' So a palavra, sem barra e sem traco. Se preferir a barra, /iron faz o mesmo,');
617
+ log(' e da pra ja mandar o pedido junto: iron preciso da copy desse anuncio');
585
618
  log('');
586
- log(' (Agente nao e comando de barra. As 14 SKILLS sim: /gate /salvar /brandkit ...)');
619
+ log(' Os outros 43 agentes se chamam PEDINDO ("usa o iron-copy").');
620
+ log(' As 14 SKILLS sao de barra: /gate /salvar /brandkit /escada ...');
587
621
  log('');
588
622
  log('3. Ligue a memoria. Diga a ele:');
589
623
  log('');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iron-edge",
3
- "version": "2.0.1",
3
+ "version": "2.1.0",
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",
@@ -16,6 +16,11 @@ O trabalho que não foi registrado não aconteceu: a próxima sessão nasce sem
16
16
 
17
17
  ## 0. Onde fica o cofre
18
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
+
19
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`.
20
25
 
21
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: