Guia para agentes de IA (e humanos) que trabalham neste repositório.
ai-memory-manager é um instalador multi-plataforma para o
ai-memory. Ele baixa a release oficial,
valida o SHA-256, instala o binário, registra o servidor HTTP como serviço de usuário
(launchd no macOS, systemd --user no Linux) e conecta automaticamente os agentes de
IA detectados (MCP + hooks).
O ponto de entrada público é sempre install.sh, executável via curl | bash.
install.sh # bootstrap fino (entry do curl); não contém lógica de instalação
Makefile # lint, syntax, check
CONTRIBUTING.md # guia de contribuição
src/
main.sh # dispatch de comandos + fluxos install/update/uninstall/start/stop/restart/reset
common.sh # logging, cleanup, expand_home, versão, sha256, wait_for_server, prompt
release.sh # download da release, validação, instalação atômica, rollback
agents.sh # tabela de agentes, detecção, health, configure, uninstall
commands.sh # status, doctor, logs, instructions, menu, serviço, usage
platform/
macos.sh # paths, launchd, checks macOS
linux.sh # paths, systemd --user, checks Linux
docs/superpowers/specs/ # specs de design
Regra de ouro: install.sh e src/main.sh decidem o quê; os módulos implementam
como; src/platform/*.sh isolam onde (caminhos e serviço).
Não há suíte de testes automatizados (bats está fora de escopo). Use:
# Lint obrigatório antes de concluir qualquer mudança
make check
# Equivalente sem Makefile
shellcheck install.sh src/**/*.sh
# Checagem de sintaxe (roda mesmo sem shellcheck instalado)
for f in install.sh src/*.sh src/platform/*.sh; do bash -n "$f"; done
# Ajuda sem instalar nada (modo checkout local)
bash install.sh help
# Menu interativo (lê de /dev/tty, funciona em `curl | bash`)
bash install.sh
# Diagnóstico em uma máquina já instalada
bash install.sh doctor
bash install.sh statusSempre rode shellcheck e bash -n antes de considerar uma tarefa concluída.
O repositório tem um .shellcheckrc que desabilita apenas SC2034, SC2120 e
SC2119 — falsos positivos estruturais da arquitetura modular: variáveis globais e
comandos são compartilhados entre arquivos via source, e o shellcheck analisa cada
arquivo isoladamente.
- Bash puro, com
set -euo pipefailem todos os arquivos. - Mensagens voltadas ao usuário em português.
- Funções de plataforma usam o prefixo
platform_; funções comuns usam o prefixo do módulo (release_,agents_, etc.). - Nunca inspecione
unamefora do bootstrap (install.sh) e desrc/platform/*.sh. - Dependências permitidas:
curl,tar,launchctl/systemctl,python3e um verificador SHA-256 (shasumousha256sum). Não adicione dependências novas sem necessidade justificada. - Evite comentários óbvios; comente apenas decisões não triviais.
- Nunca hardcode sequências ANSI: use as variáveis
C_*decommon.sh. As cores são desativadas automaticamente fora de um terminal e quandoNO_COLORestá definido. - Prompts interativos devem ler de
/dev/tty(viaprompt_line), nunca destdin, para funcionar emcurl | bash.
Todo src/platform/<os>.sh deve implementar as funções abaixo. O restante do código
depende apenas deste contrato.
| Função | Responsabilidade |
|---|---|
platform_name |
Nome legível (macos, linux). |
platform_init_paths |
Define INSTALL_ROOT, BIN_DIR, BINARY, BIN_LINK, DATA_DIR, CONFIG_DIR, LOG_DIR, LABEL, SERVER_HOST, SERVER_PORT, SERVER_URL, MCP_URL. |
platform_require |
Valida dependências obrigatórias do SO e aborta com mensagem clara. |
platform_asset_name |
Nome do asset da release para o SO/arch atual. |
platform_service_install |
Escreve e ativa o serviço. |
platform_service_uninstall |
Para e remove o serviço. |
platform_service_start |
Inicia o serviço (retorna 0 se ativo). |
platform_service_stop |
Para o serviço. |
platform_service_restart |
Reinicia o serviço (retorna 0 se ativo). |
platform_service_is_active |
Retorna 0 se o serviço está ativo. |
platform_service_status |
Imprime RUNNING / NOT RUNNING. |
platform_extra_doctor_checks |
Checks adicionais do doctor (default: no-op). |
- Crie
src/platform/<os>.shimplementando o contrato completo. - Registre a detecção em
install.sh(mapeamentouname -s→ plataforma). - Garanta que
platform_asset_namecorresponde ao asset publicado pela release oficial do ai-memory (ai-memory-<os>-<arch>.tar.gz). - Não altere
common.sh,release.shnemagents.sh— se precisar, o contrato está incompleto e deve ser discutido antes. - Atualize o
README.mdcom o one-liner e a tabela de paths do novo SO. - Rode
shellcheckebash -n.
- A validação de integridade SHA-256 é obrigatória; nunca instale sem conferir.
- A substituição de release deve ser atômica e reter a versão anterior até a validação do servidor.
- Qualquer falha em
init, no serviço ou no HTTP deve acionar rollback automático. - A limpeza de integrações de agentes é ownership-aware: delegue ao
ai-memory uninstall --apply. Nunca apague arquivos de configuração de agentes às cegas. - Nunca registre segredos ou tokens em logs.
- Mensagens no padrão Conventional Commits (
feat:,fix:,docs:,refactor:,ci:). - Não faça commit/push sem pedido explícito.
- Mudanças de design devem atualizar a spec correspondente em
docs/superpowers/specs/.
- Design multi-plataforma:
docs/superpowers/specs/2026-09-18-multi-platform-installer-design.md - Projeto upstream: https://github.com/akitaonrails/ai-memory