# INSTALAR — Squad Fernanda Landeiro v2.1

> **Para o usuário:** este arquivo é o instalador. Abra o Claude Code e diga uma frase como:
> **"Instale o squad da Fernanda Landeiro que está nesta pasta"** (ou aponte a pasta onde você descompactou o ZIP).
> O Claude vai ler este arquivo e fazer a instalação completa sozinho. Não precisa saber programar.
>
> Para **atualizar** depois (nova versão do ZIP), diga: **"Atualize o squad da Fernanda Landeiro a partir desta pasta"** — o mesmo procedimento instala por cima, com segurança.

---

## PARA O CLAUDE CODE — LEIA E EXECUTE NA ORDEM

Você está instalando o **Squad Fernanda Landeiro** (6 agentes de marketing + inteligência da expert) de forma **global**, para que os comandos `/fernanda-on` e `/fernanda-off` funcionem em qualquer pasta da máquina do usuário.

**Princípio:** a inteligência (expert-intelligence, skills, core, rules, brand-assets) é copiada para um lar estável em `~/.claude/squads/squad-fernanda-landeiro/`. Assim o usuário pode apagar o ZIP/Downloads depois que tudo continua funcionando. Os agentes e comandos vão para o global (`~/.claude/`) ancorados nesse lar via `SQUAD_ROOT`.

Os 6 agentes são instalados com o **prefixo `fernanda-`** (`fernanda-orchestrator`, `fernanda-copywriter`, `fernanda-brand-director`, `fernanda-paid-traffic`, `fernanda-web-designer`, `fernanda-anti-ia-reviewer`) para nunca colidir com outros agentes/squads do usuário.

> **Nota:** os agentes vivem em fonte única (`.claude/agents/`) — não há mais o espelho `core/agents/`. O instalador apenas copia e prefixa, sem etapa de ressincronização.

### PASSO 0 — Localizar a pasta de origem

A pasta de origem (`SQUAD_SRC`) é **a pasta que contém este arquivo `INSTALAR.md`**. Descubra o caminho absoluto dela (o usuário disse onde descompactou; se não disse, é a pasta onde você está lendo este arquivo) e preencha na primeira linha do bloco abaixo.

### PASSO 1 — Rodar o instalador (um bloco só)

Substitua **apenas** o valor de `SQUAD_SRC` pelo caminho absoluto real e execute o bloco inteiro com o Bash tool:

```bash
# ════════════════════════════════════════════════════════════════
#  INSTALADOR — Squad Fernanda Landeiro v2.1  (instala OU atualiza)
# ════════════════════════════════════════════════════════════════

# >>> ÚNICA linha a editar: a pasta que contém este INSTALAR.md <<<
SQUAD_SRC="/CAMINHO/ABSOLUTO/PARA/squad-fernanda-landeiro"

# ---- Sanidade: a pasta de origem é válida? ----
if [ ! -f "$SQUAD_SRC/INSTALAR.md" ] || [ ! -d "$SQUAD_SRC/.claude/agents" ]; then
  echo "ERRO: SQUAD_SRC inválido. Aponte para a pasta que contém INSTALAR.md e .claude/agents/."
  echo "Valor atual: $SQUAD_SRC"
  exit 1
fi

STABLE_HOME="$HOME/.claude/squads/squad-fernanda-landeiro"
AGENTS_DIR="$HOME/.claude/agents"
CMDS_DIR="$HOME/.claude/commands"
AGENTES="orchestrator copywriter brand-director paid-traffic web-designer anti-ia-reviewer"

echo "==> 1/4  Copiando inteligência para o lar estável: $STABLE_HOME"
rm -rf "$STABLE_HOME"
mkdir -p "$STABLE_HOME"
cp -R "$SQUAD_SRC/." "$STABLE_HOME/"
# Remove lixo do macOS, se houver
find "$STABLE_HOME" -name '.DS_Store' -type f -delete 2>/dev/null

echo "==> 2/4  Instalando os 6 agentes no global ($AGENTS_DIR) com prefixo fernanda-"
mkdir -p "$AGENTS_DIR"
for a in $AGENTES; do
  src="$STABLE_HOME/.claude/agents/$a.md"
  dst="$AGENTS_DIR/fernanda-$a.md"
  awk -v agent="$a" -v root="$STABLE_HOME" '
    BEGIN { fm=0 }
    {
      line=$0
      if (line=="---") {
        fm++; print line
        if (fm==2) {
          print ""
          print "**SQUAD_ROOT:** `" root "`"
          print ""
          print "Ancoragem de paths (OBRIGATÓRIO): todo path relativo deste agente — `expert-intelligence/`, `skills/`, `core/`, `.claude/rules/`, `brand-assets/` — resolve a partir de SQUAD_ROOT. Ao usar Read/Glob/Grep, prefixe SEMPRE `SQUAD_ROOT/`. Exemplo: leia `" root "/expert-intelligence/manual-comunicacao-fernanda.md`. Sem isso, a inteligência da expert não carrega e a copy sai genérica."
          print ""
        }
        next
      }
      if (fm==1) {
        if (line ~ /^name: /) { print "name: fernanda-" agent; next }
        print line; next
      }
      gsub(/subagent_type="orchestrator"/,     "subagent_type=\"fernanda-orchestrator\"",     line)
      gsub(/subagent_type="copywriter"/,       "subagent_type=\"fernanda-copywriter\"",       line)
      gsub(/subagent_type="brand-director"/,   "subagent_type=\"fernanda-brand-director\"",   line)
      gsub(/subagent_type="paid-traffic"/,     "subagent_type=\"fernanda-paid-traffic\"",     line)
      gsub(/subagent_type="web-designer"/,     "subagent_type=\"fernanda-web-designer\"",     line)
      gsub(/subagent_type="anti-ia-reviewer"/, "subagent_type=\"fernanda-anti-ia-reviewer\"", line)
      print line
    }
  ' "$src" > "$dst"
  echo "    instalado: fernanda-$a.md"
done

# Mantém o orchestrator-fonte (lido pelo comando) coerente com os nomes prefixados
for a in $AGENTES; do
  f="$STABLE_HOME/.claude/agents/$a.md"
  sed -e 's/subagent_type="orchestrator"/subagent_type="fernanda-orchestrator"/g' \
      -e 's/subagent_type="copywriter"/subagent_type="fernanda-copywriter"/g' \
      -e 's/subagent_type="brand-director"/subagent_type="fernanda-brand-director"/g' \
      -e 's/subagent_type="paid-traffic"/subagent_type="fernanda-paid-traffic"/g' \
      -e 's/subagent_type="web-designer"/subagent_type="fernanda-web-designer"/g' \
      -e 's/subagent_type="anti-ia-reviewer"/subagent_type="fernanda-anti-ia-reviewer"/g' \
      "$f" > "$f.tmp" && mv "$f.tmp" "$f"
done

echo "==> 3/4  Instalando comandos /fernanda-on e /fernanda-off no global ($CMDS_DIR)"
mkdir -p "$CMDS_DIR"
sed "s|__SQUAD_ROOT__|$STABLE_HOME|g" "$STABLE_HOME/.claude/commands/fernanda-on.md" > "$CMDS_DIR/fernanda-on.md"
cp "$STABLE_HOME/.claude/commands/fernanda-off.md" "$CMDS_DIR/fernanda-off.md"

echo "==> 4/4  Validando instalação"
ok=1
for a in $AGENTES; do
  [ -f "$AGENTS_DIR/fernanda-$a.md" ] || { echo "    FALHA: fernanda-$a.md ausente"; ok=0; }
done
[ -f "$CMDS_DIR/fernanda-on.md" ]  || { echo "    FALHA: comando fernanda-on ausente"; ok=0; }
[ -f "$CMDS_DIR/fernanda-off.md" ] || { echo "    FALHA: comando fernanda-off ausente"; ok=0; }
if grep -q "__SQUAD_ROOT__" "$CMDS_DIR/fernanda-on.md"; then echo "    FALHA: SQUAD_ROOT não substituído no comando"; ok=0; fi
miss=$(grep -c 'subagent_type="fernanda-' "$AGENTS_DIR/fernanda-orchestrator.md")
[ "$miss" -ge 3 ] || { echo "    AVISO: subagent_type prefixado só $miss vezes no orchestrator (esperado >=3)"; }

echo ""
echo "──────────────────────────────────────────────"
if [ "$ok" -eq 1 ]; then
  echo "  ✅ SQUAD FERNANDA LANDEIRO v2.1 INSTALADO"
else
  echo "  ❌ INSTALAÇÃO INCOMPLETA — ver falhas acima"
fi
echo "──────────────────────────────────────────────"
echo "  Lar estável : $STABLE_HOME"
echo "  Agentes     : $(ls "$AGENTS_DIR"/fernanda-*.md 2>/dev/null | wc -l | tr -d ' ') instalados (fernanda-*)"
echo "  Comandos    : /fernanda-on  ·  /fernanda-off"
echo "  Tamanho     : $(du -sh "$STABLE_HOME" 2>/dev/null | cut -f1)"
echo "──────────────────────────────────────────────"
```

### PASSO 2 — Conferir e avisar o usuário

Depois do bloco, confirme que apareceu `✅ SQUAD FERNANDA LANDEIRO v2.1 INSTALADO`. Então diga ao usuário, com estas palavras:

> Squad instalado. **Reinicie o Claude Code** (feche e abra de novo, ou rode `/reload` se existir) para ele reconhecer os novos comandos. Depois é só digitar **`/fernanda-on`** em qualquer pasta para ligar o squad, e **`/fernanda-off`** para desligar. Você já pode apagar a pasta do ZIP — a inteligência foi copiada para um lugar permanente.

> **Por que reiniciar:** o Claude Code carrega os comandos e agentes na inicialização. Sem reiniciar, `/fernanda-on` ainda não aparece.

---

## O que foi instalado (referência)

| Item | Destino | Observação |
|---|---|---|
| Inteligência completa (expert-intelligence, skills, core, rules, brand-assets) | `~/.claude/squads/squad-fernanda-landeiro/` | Lar estável — pode apagar o ZIP |
| `fernanda-orchestrator` | `~/.claude/agents/` | Estrategista-chefe (carregado pelo `/fernanda-on`) |
| `fernanda-copywriter` | `~/.claude/agents/` | Toda copy (Task target) |
| `fernanda-brand-director` | `~/.claude/agents/` | Criativos/brand (Task target) |
| `fernanda-paid-traffic` | `~/.claude/agents/` | Tráfego (Task target) |
| `fernanda-web-designer` | `~/.claude/agents/` | Páginas web, motion/vídeo programático, Playwright (Task target) |
| `fernanda-anti-ia-reviewer` | `~/.claude/agents/` | Revisão anti-IA independente (QA — PASSO 7.1) |
| `/fernanda-on` · `/fernanda-off` | `~/.claude/commands/` | Liga/desliga o squad |

---

## Solução de problemas

| Sintoma | Causa provável | Correção |
|---|---|---|
| `/fernanda-on` não aparece | Claude Code não foi reiniciado | Feche e reabra o Claude Code |
| Copy sai genérica / sem a voz da Fernanda | `SQUAD_ROOT` não substituído | Veja se `~/.claude/commands/fernanda-on.md` ainda tem `__SQUAD_ROOT__`. Se sim, rode o instalador de novo |
| "arquivo não encontrado" ao gerar copy | Lar estável movido/apagado | Rode o instalador novamente apontando para o ZIP |
| `ERRO: SQUAD_SRC inválido` | Caminho errado no PASSO 1 | Aponte para a pasta que contém `INSTALAR.md` |
| Quero remover tudo | — | Veja `DESINSTALAR.md` |

---
*Instalador — Squad Fernanda Landeiro v2.1 — Derivado de MSE Funnel Labs v4.7.1 — © 2026 7D/SECRETS LTDA — Anthony Nichols & André Cia*
