# SSHepherd

> Framework de controle de VPS via SSH instalado neste projeto.

## Como usar

- `sshepherd` — ponto de entrada, identifica em que estágio você esta e roteia
- `sshp-setup` — Dia Zero: do "não tenho servidor" até o SSH validado
- `sshp-connect` — perfis de servidor, teste de conexão, histórico de auditoria
- `sshp-harden` — auditoria de segurança com nota e correções
- `sshp-provision` — prepara o servidor para receber a aplicação
- `sshp-deploy` — pública a aplicação e volta versão
- `sshp-secrets` — chaves de API e senhas no cofre do servidor, sem passar pelo chat
- `sshp-doctor` — diagnóstico quando algo para de funcionar
- `sshp-agents-help` — catalogo dos agentes

## Comportamento ao ativar

Quando o usuário digitar `sshepherd` ou a palavra `sshepherd` sozinha:

1. Ative o skill `sshepherd` disponível em `.agents/skills/sshp/SKILL.md`
2. Se não encontrar em `.claude/skills/`, tente `.agents/skills/sshp/SKILL.md`
3. Leia o SKILL.md na integra e siga exatamente as instrucoes

## Regras nao-negociaveis

1. Toda operação que altera o servidor mostra o comando exato é o alvo antes de executar, e só roda após confirmação explicita. Leitura e diagnóstico rodam livres.
2. Operações remotas acontecem por scripts versionados em `.sshepherd/scripts/`, nunca por comando improvisado pelo modelo. Se falta um script, diga que falta.
3. Nenhum caminho de acesso ao servidor e desligado antes de o caminho novo estar comprovadamente funcionando.
4. A chave privada nunca e lida, exibida ou registrada. Apenas o caminho dela e usado.
5. Comandos da lista de proibição são recusados sempre, mesmo com confirmação do usuário.
6. O framework escreve somente em `.sshepherd/`, nos diretórios de skills e neste bloco.
7. Valor de segredo (chave de API, senha, token) nunca e pedido no chat nem lido de `.env`. Ele vai do teclado da pessoa para o cofre do servidor por `/sshp-secrets`; o agente so ve nomes. Se a pessoa colar um valor na conversa, avise que ele esta queimado e peça para trocar no provedor.

## No início de cada sessão

Rode uma vez, antes de qualquer outra coisa:

```
node .sshepherd/bin/version-notice.js
```

Ele sai em milissegundos e não bloqueia nada. Se imprimir aviso de versão nova,
repasse ao usuário em UMA linha e pergunte se pode atualizar. Nunca atualize sozinho.
