🇺🇸 English version: INIT.en.md.
Você é o agente de inicialização. O humano acabou de rodar
./bootstrap.sh(oupwsh ./bootstrap.ps1, ounpx llm-project-mapper init). Sua missão: completar o setup lendo o projeto real, fazendo só as perguntas que faltam e mesclando o que já existe — sem nunca destruir conteúdo do humano.CLIs compatíveis com agent loop nativo: Claude Code, Codex CLI, Cursor Agent, Hermes Agent, OpenClaw, Aider (Deepseek/Kimi/MiniMax/GLM via
--model). Sem agent loop nativo (cole prompt manualmente): GitHub Copilot CLI.
Antes de qualquer Write/Edit, leia .starter-meta.json na raiz do repo. Ele é o contrato entre o bootstrap e você.
Três regras inegociáveis, derivadas desse arquivo:
read_only_globs— Nenhum arquivo casando esses globs pode aparecer emgit diff. Você lê, mas não escreve. Se precisa de informação dele, copie/cole no.specs/(parafraseado), não edite o original.init_must_merge— Para cada caminho aqui: leia o conteúdo atual, preserve a essência, mescle com nossa estrutura padrão. Não reescreva do zero.init_must_ask— Pergunte ao humano somente esses campos. Tudo mais (product_name,stack) já foi auto-detectado.
Apenas estes caminhos são "starter-managed". Tudo fora daqui é território do humano — não toca.
.specs/** .agents/** .skills/**
.claude/** .codex/**
.github/copilot-instructions.md
.github/copilot/**
.github/PULL_REQUEST_TEMPLATE.md
.github/ISSUE_TEMPLATE/**
.github/workflows/ci.yml
.github/workflows/dod.yml
AGENTS.md CLAUDE.md README.md README.pt-BR.md
playwright.config.ts (apenas se ainda não existe ou se é template nosso)
Caminho fora dessa whitelist e que não é arquivo do template original → não escreve.
Read .starter-meta.json. Se não existe, abortar e instruir humano a rodar./bootstrap.shprimeiro.- Para cada item em
init_must_ask, pergunte ao humano em uma única mensagem (não uma por vez):team— Qual time é dono? (sugestão:<valor de meta.team>)domain— Domínio de negócio em 1-3 palavras? (sugestão:<valor de meta.domain>)vision_oneliner— Em 1 frase, qual problema esse produto resolve e pra quem?primary_personas— Quem usa? (2-4 perfis: ex.admin operacional,cliente final,analista financeiro)
- Persistir as respostas atualizando
.starter-meta.json(adicionar/sobrescreverteam,domain,vision_oneliner,primary_personas). - Se humano não responder algo, marcar
**TODO: humano preencher**no doc e seguir.
Spawna @inspector (subagent Explore ou general-purpose):
- Lê
.starter-meta.jsonpara conhecer a stack. - Mapeia pastas de topo (
ls -la,find . -maxdepth 2 -type d). - Lê o
README.mdoriginal (se existir e não for nosso template) — extrai descrição, badges, comandos. Não modifica. - Detecta entidades por convenção da stack:
- Node/TS →
**/models/**,**/entities/**,**/types/**,**/schemas/**,**/*.dto.ts - .NET →
**/Models/**,**/Entities/**,**/DTOs/**,**/*.cscom atributos[Table]/[Key] - Python →
**/models.py,**/schemas.py,**/entities/**, classesBaseModel/SQLAlchemy - Go →
**/models/**, structs com tagdb:oujson: - Rust →
**/models.rs, structs com#[derive(Serialize)] - Flutter →
lib/models/**, classesfreezed/json_serializable - PHP/Laravel →
app/Models/** - Ruby →
app/models/**
- Node/TS →
- Detecta integrações externas: imports
axios/fetch/HttpClient/requests/reqwest, env vars (*_URL,*_KEY,*_TOKEN), connection strings. - Detecta scripts/comandos reais:
package.jsonscripts,Makefile,composer.jsonscripts,pyproject.toml[tool.poetry.scripts],*.csprojtargets. - TODO/FIXME/HACK no código de produção (excluir
node_modules/vendor/dist/build). - Issues abertas via
gh issue list --limit 50seghautenticado.
Output do inspector — relatório markdown salvo em .specs/journal/inspection-<YYYY-MM-DD>.md com seções:
Stack real, Estrutura de pastas, Entidades detectadas, Comandos úteis, Integrações, TODOs encontrados, Issues abertas.
Após Fase 1 (perguntas respondidas) e com Fase 2 já rodando, dispare em paralelo (1 message com múltiplas chamadas Agent):
| Agent | Output | Insumo |
|---|---|---|
@vision-writer |
.specs/product/VISION.md |
vision_oneliner + README original + descrição do package.json/*.csproj/pyproject.toml |
@domain-mapper |
.specs/product/DOMAIN.md (com Mermaid erDiagram real) |
entidades detectadas pelo inspector |
@personas-writer |
.specs/product/PERSONAS.md |
primary_personas + roles/permissions detectadas no código |
@design-mapper |
.specs/architecture/DESIGN.md (com Mermaid de boundaries reais) |
estrutura de pastas + integrações + frameworks |
@patterns-extractor |
.specs/architecture/PATTERNS.md |
naming/estrutura/convenções reais observadas no código (não inventa) |
@backlog-collector |
.specs/sprints/BACKLOG.md |
TODOs + issues do gh |
Para cada caminho em init_must_merge:
Reado arquivo existente do humano.- Identifique a essência: comandos importantes, regras específicas do projeto, links internos, glossário, contatos, restrições de compliance.
- Componha um arquivo novo com a estrutura do template do starter (Stack / Comandos / Workflow / DoD / Padrões / Onde encontrar contexto / Proibido / Skills / Custom agents) + seção
## Conteúdo preservado do <nome-original>ao final, com a essência do humano. Writeno mesmo caminho. Diff resultante deve ser adição enriquecedora, nunca remoção do que o humano escreveu.- Espelhamento obrigatório: se você editou
AGENTS.md, replique a mesma mudança emCLAUDE.mde em.github/copilot-instructions.md. Os três ficam alinhados (ou crie symlink:ln -sf AGENTS.md CLAUDE.md).
-
@instruction-updater— atualizaAGENTS.md/CLAUDE.md/.github/copilot-instructions.md:- Substitui a seção
## Comandos importantespor comandos reais extraídos pelo inspector (não placeholders). - Adiciona links para os docs preenchidos em
.specs/. - Adiciona seção
## Skills/Agents disponíveiscom o que existe em.skills/e.agents/.
- Substitui a seção
-
DoD checks:
- Todos os arquivos do tree existem (
AGENTS.md,CLAUDE.md,.specs/{product,architecture,workflow,sprints}/...). - Sem placeholders
<PRODUCT_NAME>/<TEAM>/<DOMAIN>/<STACK>remanescentes em starter-managed paths. - Mermaid blocks com sintaxe válida (sem acento em IDs, labels com espaço entre aspas).
- Nenhum doc significativo abaixo de 30 linhas úteis.
- Verificação crítica:
git statusNÃO deve listar nenhum arquivo casandoread_only_globs. Se listar, algo escapou — reverta comgit checkout -- <arquivo>.
- Todos os arquivos do tree existem (
-
Reporte ao humano o que ficou:
- Arquivos preenchidos (lista).
- Top 5 entidades detectadas.
- Comandos identificados.
- O que ficou como TODO: humano preencher.
- Próxima ação sugerida (criar
sprint-01/SPRINT.md, abrir primeira ADR, configurar branch protection, etc.).
Pergunta ao humano:
"Apagar
_BOOTSTRAP.md,INIT.md,bootstrap.sh,bootstrap.ps1agora? (s/N)"
Se s:
rm _BOOTSTRAP.md INIT.md bootstrap.sh bootstrap.ps1
git add -A
git commit -m "chore: remove starter bootstrap files after init"Mantém .starter-meta.json (referência futura).
- Idioma: respostas/conteúdo gerado em pt-BR. Código (vars/funções/classes), commits, identificadores: inglês.
- Não inventa — se o código não dá pra extrair certa info, marca
TODO: humano preencherexplícito. - Concreto > genérico — exemplos com nomes reais (entidades, rotas, comandos do projeto), não placeholders.
- Sem emojis em código fonte.
- Mermaid válido — IDs sem acento; labels com espaço entre aspas (
["Order Service"]). - Paralelo agressivo — qualquer trabalho independente vai num único message com múltiplas chamadas
Agent. - Read-only é lei — qualquer arquivo casando
read_only_globsé intocável. Se aparecer emgit diff, reverta. - Mesclar é a regra para
init_must_merge— nunca reescreva do zero, sempre componha por cima. - Sem dependências novas sem perguntar.
-
.starter-meta.jsonlido e atualizado com respostas do humano. -
init_must_askperguntado uma vez só, em uma única mensagem. - Inspector rodou e produziu relatório com entidades/comandos/integrações reais.
- 6 docs do
.specs/preenchidos com info real (não placeholder). -
init_must_mergemesclado com essência preservada. -
AGENTS.md↔CLAUDE.md↔.github/copilot-instructions.mdalinhados. -
git statusnão lista nenhum arquivo deread_only_globs. - Sem placeholders
<PRODUCT_NAME>/<STACK>/<TEAM>/<DOMAIN>remanescentes em starter paths. - Resumo entregue ao humano: arquivos, entidades, comandos, TODOs, próxima ação.
INIT.md é descartável após rodar 1x. Não persiste config aqui — persiste em .specs/.
{ "product_name": "...", "team": "...", "domain": "...", "stack": "...", "bootstrapped_at": "2026-05-08T19:45:00Z", "starter_version": "0.2.0", "existing_instruction_files": [".github/copilot-instructions.md"], "init_must_ask": ["team", "domain", "vision_oneliner", "primary_personas"], "init_must_merge": [".github/copilot-instructions.md"], "read_only_globs": ["**/*.razor", "**/*.cs", "package.json", "..."] }