# Processo de projeto com a IA — criar ou atualizar
Mapa de **nível 0**: como a demanda entra no framework e vira trabalho. Decide entre
**criar** um projeto novo e **atualizar** um existente; ambos convergem no ciclo
CLI-first de 6 etapas detalhado em [`docs/fluxo.md`](./fluxo.md).
> "Nossa IA" = os 6 papéis (`AGENTS.md`) operando via Claude Code, apoiados pelas 3
> capacidades do [ADR-0016](../memory/90-decisions/0016-integracao-capacidades-externas.md):
> **codegraph** (entender código), **harness** (desenhar time), **ai-engineering** (referência).
---
## Mapa de decisão
```mermaid
flowchart TD
D(["💡 Demanda"]) --> Q{"Projeto já
existe?"}
%% ── Ramo A: NOVO ──
Q -- "Não" --> A1["A1· Gerar scaffold
npm run init:project <nome> --ai claude,copilot"]
A1 --> A2["A2· Escolher boilerplate
api-rest · saas · ecommerce · microservices · monorepo"]
A2 --> A3["A3· (opcional) harness
desenha o time de agentes do domínio"]
A3 --> C0
%% ── Ramo B: EXISTENTE ──
Q -- "Sim" --> B0{"Já tem
memory/?"}
B0 -- "Não" --> B1["B1· Overlay de memória
init:project detecta backend → --only-memory"]
B0 -- "Sim" --> B2["B2· Indexar código
codegraph init (entender o que existe)"]
B1 --> B2
B2 --> C0
%% ── Convergência: ciclo SDD+GSD ──
C0(["▶ Entra no ciclo CLI-first"]) --> CICLO
subgraph CICLO["docs/fluxo.md — 6 etapas"]
direction LR
c1["1·Entender"] --> c2["2·Especificar"] --> c3["3·Arquitetar"] --> c4["4·Decompor"] --> c5["5·Implementar"] --> c6["6·Governar"]
end
CICLO --> OUT(["✅ Entrega + memória atualizada"])
```
### Fallback ASCII
```
💡 Demanda
│
├─ projeto NÃO existe ─► A1 init:project --ai …
│ A2 escolher boilerplate
│ A3 (opc.) harness desenha o time ─┐
│ │
└─ projeto JÁ existe ──► tem memory/? │
├─ não ► B1 overlay --only-memory │
└─ sim ─┘ │
B2 codegraph init ────────┤
▼
▶ CICLO (docs/fluxo.md):
1·Entender → 2·Especificar → 3·Arquitetar
→ 4·Decompor → 5·Implementar → 6·Governar ─► ✅
```
---
## Ramo A — Criar projeto novo
O gerador (`bin/init-project.js`) roda 8 passos: git-init → estrutura agentes+memória
→ design-lib → instruções multi-IA → install-backend → init memória SQLite →
context-pack → next-steps. Cada projeto nasce com `memory/`, `.ia-instructions/`
(claude/copilot/gemini/codex) e seu próprio banco de memória.
Projetos de produto vivem no **workspace Forja** (`~/forja-workspace/projects/`
por padrão), fora do repo do framework. Veja ADR-0019.
```bash
# 1. preparar workspace (uma vez)
npm run workspace:init
# 2. gerar (cria em ~/forja-workspace/projects/)
npm run project:new -- --ai claude,copilot,gemini
# 3. (opcional) escolher boilerplate de stack
ls boilerplates/ # 01-api-rest · 02-saas-starter · 03-ecommerce · 04-microservices · 05-monorepo
# 4. (opcional) na sessão Claude Code, desenhar o time de agentes do domínio:
# "build a harness for this project" → gera .claude/agents + .claude/skills
# 5. entrar no ciclo: começa pela spec
npm run spec:new --
```
---
## Ramo B — Atualizar projeto existente
```bash
# B1. projeto sem memória ainda? sobrepõe só a camada de memória/agentes
# (init:project detecta backend e aplica --only-memory automaticamente)
npm run init:project # apontando para o projeto existente
# B2. indexar o código atual ANTES de mexer (entender sem ler arquivo a arquivo)
codegraph init # ou: npm run code:index
codegraph explore "<área a mudar>"
# entra no ciclo pela spec da mudança
npm run spec:new --
```
A diferença essencial do ramo B é a **etapa 1 (Entender) com codegraph**: antes de
especificar a mudança, mapeie símbolos, callers e impacto no código que já existe.
---
## Convergência — o ciclo (resumo)
Os dois ramos terminam no mesmo ciclo de 6 etapas. Quem dirige cada uma:
| # | Etapa | Papel | Capacidade |
|---|-------|-------|------------|
| 1 | Entender | context-engineer | codegraph · ai-engineering |
| 2 | Especificar | product | — |
| 3 | Arquitetar | sdd-architect | harness · ADR |
| 4 | Decompor | sdd-architect | — |
| 5 | Implementar | orchestrator + worker | codegraph (MCP) |
| 6 | Governar | governance | codegraph (`affected`) |
Detalhe de comandos por etapa, handoffs (7 campos, ADR-0005) e o papel do dashboard
opcional: **[`docs/fluxo.md`](./fluxo.md)**.
---
## Onde "nossa IA" age em cada ramo
- **Novo projeto:** a IA gera o scaffold, e o **harness** desenha o time de agentes
inicial sob medida para o domínio. ai-engineering fundamenta escolhas técnicas.
- **Projeto existente:** **codegraph** dá à IA o mapa do código atual (símbolos,
call paths, testes afetados) — é o que evita refator às cegas. O overlay
`--only-memory` dá ao projeto a camada de memória/agentes sem tocar no código.
- **Sempre:** memória e contexto são transversais (`sync:universal`,
`query:universal`, `context:smart`) e cada handoff entre papéis fica registrado em
`~/forja-workspace/memory/sqlite/universal.db`.