# 02 · Explorar a anatomia

Antes de mudar qualquer coisa, entenda as quatro peças que fazem o app funcionar: o manifesto, o mapa de plugins gerado, o registry de código custom e o AGENTS.md. Depois deste passo você sabe onde tocar para cada tipo de mudança.

## `app.manifest.json` — o centro de tudo

É o arquivo que descreve o app inteiro. Recém-criado, um app admin se parece com isto:

```json
{
  "manifestVersion": 2,
  "id": "minha-loja",
  "name": "minha-loja",
  "backend": { "provider": "mock" },
  "locale": {
    "default": "pt-BR",
    "supported": ["pt-BR", "en"],
    "currency": "BRL"
  },
  "theme": { "brand": "violet" },
  "surfaces": {
    "admin": {
      "scaffold": "admin",
      "plugins": [{ "id": "dashboard" }],
      "pages": []
    }
  }
}
```

Três blocos importam mais do que os outros:

- **`surfaces`** — cada surface é uma face do app (`admin`, `storefront`, `member`). Ela declara um `scaffold` (o layout do shell), a lista de `plugins` e `pages` extras. A navegação é derivada dos plugins: você liga um plugin e as rotas e o menu aparecem — você não escreve rotas à mão.
- **`plugins`** — dentro da surface, cada item é só `{ "id": "..." }`. É assim que você adiciona uma capacidade (passo 04).
- **`backend`** — `{ "provider": "mock" }` roda com dados de exemplo e zero configuração. No passo 05 você troca para `"supabase"`.

## `src/plugins.generated.ts` — o mapa dos plugins

```ts
// Generated by 'fayz create'. Maps manifest plugin ids → platform-bundled plugin factories.
export {}
```

Esse arquivo liga os `id`s do manifesto aos factories reais dos plugins. Hoje ele vem vazio porque os plugins do catálogo são resolvidos pelo bundle da plataforma. Trate-o como gerado: você não edita à mão — o manifesto é a fonte da verdade.

## `src/registry.tsx` — o seu código

```tsx
//   import { registerBlock } from './lib/fayz-runtime'
//   registerBlock('custom:my-block', MyBlock)
export {}
```

É o ponto onde você registra blocos, páginas e componentes próprios (níveis 5–7 da escada de personalização) e depois os referencia no manifesto pelo id `custom:`. Enquanto você só configura, ele fica vazio.

## `AGENTS.md` — o manual para um agente

O scaffold inclui um `AGENTS.md` descrevendo a estrutura, a checklist de personalização e o passo a passo do Supabase. A ideia é concreta: você pode abrir este app com um agente de IA e ele já sabe que "personalizar = editar o manifesto, não escrever código novo", onde ficam os arquivos e como conectar um banco real. É documentação para a máquina, versionada junto com o app.

Ver também: [Conecte seu agente](/pt-BR/docs/ia/conecte-seu-agente) — como apontar o Claude Code, o Cursor ou o Codex para o `AGENTS.md` e o `llms.txt`.

{% callout type="tip" %}
✓ Você deve ver: abrindo o `app.manifest.json`, o bloco `surfaces.admin.plugins` com um único `{ "id": "dashboard" }`. Guarde esse lugar — os próximos passos editam exatamente ele.
{% /callout %}

---

[← Anterior: 01 · Criar o app](/pt-BR/docs/tutorial/01-criar-o-app) · [Próximo: 03 · Tema e marca →](/pt-BR/docs/tutorial/03-tema-e-marca)
