<div align="center">

# PrimoCode Studio

**O estúdio de criação que a IA opera.**

Seis ferramentas nativas, um modelo de documento em comum, zero dependências.
A IA escreve o documento, o estúdio desenha, você refina à mão.

</div>

---

## Rodar

```bash
python3 server.py
```

Abra <http://localhost:7777>. Só precisa de Python 3 — nada para instalar,
nada para compilar, funciona offline.

Outra porta: `python3 server.py 8080`.

## As ferramentas

| Ferramenta | Papel | No lugar de |
|---|---|---|
| **Prisma** | Apresentações | PowerPoint, Keynote, Canva Apresentações |
| **Tela** | Design gráfico | Photoshop, Figma, Canva |
| **Prosa** | Documentos | Word, Google Docs, Notion |
| **Grade** | Planilhas | Excel, Google Sheets |
| **Corte** | Vídeo | CapCut, Premiere, After Effects |
| **Traço** | Diagramas | Miro, Whimsical, Lucidchart |

Cada uma tem editor completo — trilho de inserção, camadas, inspetor de
propriedades, arrastar e redimensionar, desfazer, edição no lugar — e todas
compartilham o mesmo modelo de documento, o que faz a IA aprender uma vez e
operar as seis.

## Como a IA usa

Ela não clica em nada. Lê o manual, escreve o documento e devolve o link:

```bash
curl -s http://localhost:7777/api/manual

curl -s -X POST http://localhost:7777/api/arquivos \
  -H 'Content-Type: application/json' \
  -d '{"ferramenta":"prisma","titulo":"Energia solar","doc":{
        "tema":"meia-noite",
        "cenas":[{"layout":"capa","fundo":"malha","elementos":[
          {"tipo":"texto","papel":"chapeu","texto":"Panorama 2026"},
          {"tipo":"texto","papel":"titulo","texto":"Energia solar no Brasil"}]}]}}'
```

A resposta traz `ver` (tela cheia) e `editar` (estúdio). O usuário recebe um link.

### A regra de abertura

Quando alguém pede "abre o Canva", "abre o PowerPoint", o agente responde:

> Posso abrir o(a) **[app pedido]**, mas para te entregar com mais qualidade vou
> usar minhas ferramentas nativas.

E entrega o arquivo pronto em vez de um app vazio.

## A pasta `ferramentas/`

É a fonte da verdade. O servidor lê os `.md` de lá e serve tudo junto em
`/api/manual` — não existe spec duplicada. Editar um arquivo muda o que a IA
sabe na hora, sem reiniciar nada.

```
ferramentas/
  00-protocolo.md   comportamento do agente, frase de abertura, tabela de equivalência
  01-modelos.md     os três modelos: cena, documento, planilha
  prisma.md  tela.md  prosa.md  grade.md  corte.md  traco.md
```

Para Claude Code há também `.claude/skills/primocode/` — a skill dispara sozinha
quando alguém fala em slides, arte, documento, planilha, vídeo ou diagrama.

## Os três modelos

Aprenda `cena` e você opera quatro ferramentas.

```json
{ "tema": "meia-noite", "largura": 1920, "altura": 1080,
  "cenas": [{ "layout": "capa", "fundo": "malha", "elementos": [
    { "tipo": "texto", "papel": "titulo", "texto": "Título" }
  ]}]}
```

Com `layout` nomeado, o estúdio posiciona: `capa` `titulo` `secao` `duas-colunas`
`tres-colunas` `numeros` `citacao` `imagem-direita` `imagem-esquerda` `centro`.
Com `layout: "livre"`, você define `x`, `y`, `l`, `a` — é o canvas do Tela e do Traço.

Elementos: `texto` `lista` `cartoes` `numeros` `tabela` `citacao` `codigo`
`grafico` `imagem` `icone` `forma` `no` `conector`.

`documento` (Prosa) é uma lista de blocos. `planilha` (Grade) tem abas com
fórmulas de verdade — `=SOMA(D1:D4)`, `=ARRED(D1/B1*100)` — resolvidas no
navegador e também no export CSV.

Detalhe completo em [`ferramentas/01-modelos.md`](ferramentas/01-modelos.md).

## API

| Método | Rota | O que faz |
|---|---|---|
| `GET` | `/api/manual` | manual completo, em um fetch |
| `GET` | `/api/ferramentas` | as seis, em JSON |
| `GET` | `/api/ferramentas/<slug>` | spec de uma |
| `GET` | `/api/arquivos` | lista |
| `POST` | `/api/arquivos` | cria — `{ferramenta, titulo, doc}` |
| `GET` `PUT` `DELETE` | `/api/arquivos/<id>` | lê, atualiza, apaga |
| `GET` | `/api/arquivos/<id>/export` | `.html` autônomo · `.csv` (Grade) · `.md` (Prosa) |

O export HTML é um arquivo único com CSS, renderizadores e documento embutidos —
zero requisição externa, abre offline, dá para mandar por e-mail.

## Atalhos no modo Abrir

`→` `espaço` avança · `←` volta · `K` toca/pausa (Corte) · `F` tela cheia ·
`P` imprime ou salva em PDF, uma cena por página.

## Estrutura

```
server.py              servidor e API — biblioteca padrão do Python
web/
  core.css             interface do estúdio
  render.css           aparência do que é criado (vai junto no export)
  home.html            biblioteca e lançador
  tool.html            editor
  view.html            apresentação e reprodução
  js/
    icones.js          ~60 ícones em SVG
    render.js          desenha cenas: layouts, elementos, gráficos, conectores
    render-prosa.js    desenha documentos
    render-grade.js    desenha planilhas e resolve fórmulas
    editor.js          o estúdio manual
    player.js          apresentar, reproduzir, imprimir
    ferramentas.js     o que cada ferramenta oferece na interface
ferramentas/           a spec que a IA lê
arquivos/              o que foi criado, um JSON por peça
```

Os arquivos ficam em `arquivos/*.json` — texto puro, versionável, diffável.

## Licença

MIT.
