Skip to content

Commit f4e31b8

Browse files
elberrdclaude
andcommitted
feat: /tema e /design no Pi + /mapear completo (registro + página por padrão)
- prompts tema.md e design.md + cookbooks theme.md e design.md: entrevista de tema com preview aprovada (código via FDA) e redesign de layout por referência dentro do design system (motion via Impeccable) - /mapear ganha os passos 4-5 por padrão: component-architect (semeia o registro — a trava de reuso dos briefs depende dele) e ui-component-page (página /ui-components); opt-out 'sem componentes'; harness_bridge idem - viewer: a página viva nasce no /mapear (Pi), /start (passo 6) ou no primeiro /componente - registros: SKILL.md da fia (rotas + cookbooks), nota do fia.js, README Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 8e473f7 commit f4e31b8

10 files changed

Lines changed: 178 additions & 4 deletions

File tree

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Após a instalação (salvo `--no-fia`):
3636
| Peça | Onde | Uso |
3737
| ------------------- | ---------------------------- | -------------------------------------------------------------------- |
3838
| **Orquestrador Pi** | `.pi/skills/fia/` | `pi``/fia` — panorama, FDAs, cookbooks, subagentes |
39-
| **Comandos curtos** | `.pi/prompts/` | `/ideia`, `/stack`, `/componente`, `/grill`, `/prd`, `/mapear`, `/tarefa`, `/goal`, `/lancar`, `/status` |
39+
| **Comandos curtos** | `.pi/prompts/` | `/ideia`, `/stack`, `/componente`, `/tema`, `/design`, `/grill`, `/prd`, `/mapear`, `/tarefa`, `/goal`, `/lancar`, `/status` |
4040
| **FDAs** | `fia/fda_*.mjs` | `node fia/fda_plan_build_test.mjs "…"` — fluxos determinísticos |
4141
| **Trace** | `fia/data/fia.db` | `npm run fda:sessions` / `fda:phases` / `fda:tail` |
4242
| **Viewer** | `fia/scripts/fia-viewer.mjs` | `npm run fda:viewer` — timeline Gantt no navegador (ao vivo) |
@@ -52,6 +52,8 @@ Rode `pi` na pasta do projeto e digite `/` — o autocomplete mostra os comandos
5252
| "Não sei nem o que vou criar" | `/ideia` | Entrevista do zero (uma pergunta por vez, sempre com recomendação) até nascer o `ai-docs/PRD.md` — e a melhor STACK para ele (grava em `ai-docs/stack.md`) |
5353
| Stack pendente (ou tech nova) | `/stack` | Decide camadas "decidir depois" do manifesto, gera `ai-docs/apis/<tech>.md` (com a receita de Produção) e instala CLI/MCP/skills da tecnologia |
5454
| Componente novo (shadcn/REUI/…) | `/componente` | Nome + URL/comando → pesquisa, instala, registra em `ai-docs/components/registry.md` e expõe na página `/ui-components` (design system vivo). Conflito (duas data tables)? Você escolhe o padrão; a outra vira alternativa, usada só quando pedida |
55+
| Mudar a cara do app | `/tema` | Entrevista rápida (cores, fontes, forma) → preview do design system atual × proposto → só aplica com sua aprovação |
56+
| Mudar o LAYOUT (com referência) | `/design` | Imagem(ns) de referência → estrutura extraída, identidade preservada (registry/tema); motion via Impeccable; amplo vira tarefas |
5557
| "Tenho uma ideia/rascunho de PRD" | `/grill` | Entrevista que estressa o PRD: caça o que falta (atores, permissões, casos extremos, escopo v1) e grava cada decisão de volta no documento |
5658
| "Quero só um parecer rápido" | `/prd` | O revisor lista lacunas e ambiguidades em ordem de importância (não edita nada) |
5759
| PRD pronto | `/mapear` | Gera `ai-docs/map.yaml`, telas/rotas e as tarefas numeradas em `ai-docs/todos/issues/` — e abre tudo numa página (`npm run plano`) |

fia-templates/scripts/fia-viewer-page.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1352,7 +1352,7 @@ function renderPlanDesignTab(box){
13521352
'<span style="color:var(--faint);font-size:11.5px;margin-left:9px">precisa do app rodando (npm run dev)</span></div>';
13531353
} else {
13541354
html += '<div style="padding:0 16px 14px;color:var(--faint);font-size:12px">A página viva de componentes ('+
1355-
esc((d.uiPage&&d.uiPage.route)||'/ui-components')+') ainda não existe — ela nasce no /start do Claude Code (passo 6).</div>';
1355+
esc((d.uiPage&&d.uiPage.route)||'/ui-components')+') ainda não existe — ela nasce no /mapear (Pi), no /start do Claude Code (passo 6) ou no primeiro /componente.</div>';
13561356
}
13571357
html += '</section>';
13581358
if(d.registry && d.registry.exists && d.registry.entries.length){

pi-templates/.pi/prompts/design.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
description: Mudar o LAYOUT do app a partir de referências (imagens) — estrutura da referência, identidade do nosso design system
3+
argument-hint: "[imagem(ns) + telas em escopo + descrição — o que faltar eu pergunto]"
4+
---
5+
Leia `.pi/skills/fia/SKILL.md` e o cookbook `.pi/skills/fia/cookbooks/design.md`, e siga-o à risca.
6+
7+
Referências/pedido: $@
8+
9+
A regra de ouro: **a imagem é inspiração de ESTRUTURA — cores, fontes e
10+
componentes vêm do NOSSO design system** (tema + registry). Nesta ordem:
11+
12+
1. Leia o registro de componentes, as telas atuais e a skill Impeccable (se
13+
instalada — ela manda no motion).
14+
2. Leia a(s) referência(s) como designer: estrutura, hierarquia, densidade,
15+
padrões, motion — e me confirme sua leitura em uma frase.
16+
3. Entrevista curta (UMA pergunta por vez, com recomendação): escopo, o que
17+
importa da referência, o que preservar, nível de motion.
18+
4. Plano por tela mapeado ao registry (componente faltando → fluxo do
19+
/componente ANTES; quero as cores da imagem? → /tema com preview). Espere
20+
meu OK.
21+
5. Aplicar: contido → um FDA + /test-ui; amplo → recomende virar tarefas
22+
(issues com o plano nos briefs) e executar com /tarefa ou /goal.
23+
24+
Nunca copie a referência pixel a pixel; nunca toque no tema aqui.

pi-templates/.pi/prompts/mapear.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,20 @@ Delegue em sequência, esperando cada um terminar:
1313
1. `start-mapper` → gera `ai-docs/map.yaml`
1414
2. `screen-routes-generator` → gera `ai-docs/screens-routes.md`
1515
3. `task-master-generator` → gera `ai-docs/todos/issues/NN-<slug>.md` + `ai-docs/todos/task-master.md`
16+
4. `component-architect``ai-docs/components/ideal-components.md` + SEMEIA o
17+
registro `ai-docs/components/registry.md` (a trava de reuso dos briefs
18+
depende dele — sem semear, toda tarefa de UI trava em "não existe no registro")
19+
5. `ui-component-page` → cria/atualiza a página viva `/ui-components`
20+
(design system padronizado: sidebar + busca + Fundamentos)
21+
22+
(Os passos 4–5 são o padrão; se eu disser "sem componentes", pule-os.)
1623

1724
Instruções extras do engenheiro: $@
1825

1926
Ao final:
2027

2128
1. Rode `npm run plano -- --detach` — abre no navegador a página "Plano" com tudo que foi criado (telas, tarefas, design system). Se o script não existir ou falhar, siga em frente e apenas diga que dá para ver depois com `npm run plano`.
22-
2. Me mostre: quantas tarefas foram criadas, a ordem sugerida (grafo de dependências) e qual seria a tarefa 1.
29+
2. Me mostre: quantas tarefas foram criadas, a ordem sugerida (grafo de dependências), qual seria a tarefa 1 — e quantos componentes entraram no registro.
2330
3. Diga, com estas palavras: "abri no seu navegador a página Plano com tudo que o /mapear criou — ela fica em http://127.0.0.1:4600#plan (ou `npm run plano`)".
2431

2532
NÃO comece a implementar — para isso eu uso /tarefa ou /goal.

pi-templates/.pi/prompts/tema.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
description: Mudar o tema do app (cores, fontes, forma) — entrevista rápida, preview para aprovar, e só então aplica
3+
argument-hint: "[dica opcional — ex.: 'azul, mais sério' ou o comando do shadcn/create]"
4+
---
5+
Leia `.pi/skills/fia/SKILL.md` e o cookbook `.pi/skills/fia/cookbooks/theme.md`, e siga-o à risca.
6+
7+
Dica inicial (opcional): $@
8+
9+
Nesta ordem — e NADA muda no app sem a minha aprovação:
10+
11+
1. Leia o tema atual, a stack (`ai-docs/stack.md`) e o PRD — as recomendações
12+
saem dali.
13+
2. Entrevista rápida (~6 perguntas, UMA por vez, sempre com recomendação em
14+
termos leigos): cor principal (aceito vibe), acento/neutros, claro/escuro,
15+
par de fontes, forma (cantos/densidade/sombra), detalhe livre.
16+
3. Preview via FDA: rota `/ui-components/preview` com o design system que JÁ
17+
existe renderizado lado a lado — Atual × Proposto, claro e escuro. Me avise
18+
para abrir com `npm run dev`.
19+
4. Eu decido: **aprovar** (aplica em globals.css + fontes e apaga a preview),
20+
**ajustar** (me pergunte o que mudar e regenere) ou **desistir** (apaga a
21+
preview; zero mudanças).
22+
23+
Contraste AA nos dois modos é bloqueio. Commit só se eu pedir.

pi-templates/.pi/skills/fia/SKILL.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ Short commands (prompt templates em `.pi/prompts/`) are the student entry points
3737
| `/goal` | todas as tarefas até terminar | harness_bridge (Step 3) |
3838
| `/lancar` | colocar no ar — beta pública e produção | launch |
3939
| `/componente [nome + URL/comando]` | adicionar componente ao design system (registrar + instalar + página) | components |
40+
| `/tema [dica]` | mudar cores/fontes/forma — entrevista → preview aprovada → aplica | theme |
41+
| `/design [imagens]` | redesign de layout por referência, dentro do design system | design |
4042
| `/absorver [foco]` | projeto existente → PRD as-built + mapa + convenções + manifesto de stack + registro de componentes ||
4143
| `/status` | progresso + últimas execuções | observability |
4244

@@ -46,6 +48,8 @@ For anything else, route by request:
4648
|---|---|
4749
| Decidir stack / documentar tecnologia | [cookbooks/stack.md](cookbooks/stack.md) |
4850
| Componentes de UI / design system / registry | [cookbooks/components.md](cookbooks/components.md) |
51+
| Mudar tema / cores / fontes | [cookbooks/theme.md](cookbooks/theme.md) |
52+
| Redesign de layout / referência visual / motion | [cookbooks/design.md](cookbooks/design.md) |
4953
| Install / stamp FIA | [cookbooks/install.md](cookbooks/install.md) |
5054
| Run an FDA | [cookbooks/run_fda.md](cookbooks/run_fda.md) |
5155
| Create a new FDA | [cookbooks/create_fda.md](cookbooks/create_fda.md) |
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Design — layout redesign from references, inside the design system
2+
3+
`/design` changes the app's LAYOUT (navegação, onde ficam tabelas/cards/
4+
gráficos, hierarquia, densidade, motion) a partir de imagens de referência
5+
e/ou descrição. The rule that makes it work:
6+
7+
> **A referência é inspiração de ESTRUTURA. A identidade é NOSSA.**
8+
> Layout/hierarquia/densidade/motion vêm da referência; cores, fontes e
9+
> componentes vêm do design system (tema + `ai-docs/components/registry.md`).
10+
11+
You orchestrate and interview; **app code is FDA work**. Talk pt-BR.
12+
13+
## Step 1 — Facts
14+
15+
Registry (vocabulário único de componentes, papel padrão × alternativa),
16+
`ai-docs/stack.md`, `ai-docs/screens-routes.md`, `ai-docs/map.yaml`, o código
17+
das telas em escopo, e a skill Impeccable quando instalada (autoridade de
18+
motion/polish).
19+
20+
## Step 2 — Ler a referência como designer (não como copiador)
21+
22+
De cada imagem, extraia por escrito: estrutura (navegação, grid, regiões),
23+
hierarquia (o que domina, o que apoia), densidade, padrões (filtros topo ×
24+
lateral; detalhe em página × drawer) e motion percebido. DESCARTE
25+
explicitamente: paleta, tipografia, ícones, componentes de outra biblioteca.
26+
Pediram as cores da imagem? Explique a separação e ofereça levar a paleta
27+
extraída como ponto de partida do `/tema` (com preview).
28+
29+
## Step 3 — Confirmar (entrevista curta, UMA pergunta por vez, com recomendação)
30+
31+
Escopo (quais telas) · o que da referência importa (confirme sua leitura em
32+
uma frase) · o que preservar do atual · nível de motion (sóbrio recomendado |
33+
médio | expressivo).
34+
35+
## Step 4 — Plano mapeado ao design system (aprovação obrigatória)
36+
37+
Por tela, região a região, cada necessidade → linha do registry (`padrão`;
38+
`alternativa` só pedida por nome). Faltou componente → protocolo do
39+
`/componente` (registrar + instalar) ANTES. Motion: com Impeccable, siga-a;
40+
sem ela: 150–300ms, transform/opacity, stagger ≤ 60ms,
41+
`prefers-reduced-motion` sempre. Mostre o plano e espere o OK.
42+
43+
## Step 5 — Aplicar (o tamanho decide)
44+
45+
- **Contido** (uma tela/região): UM FDA com o plano como brief; valide com
46+
`/test-ui` (e `impeccable audit` quando houver). Atualize
47+
`ai-docs/screens-routes.md`.
48+
- **Amplo** (navegação + várias telas): recomende virar TAREFAS — issues
49+
numeradas (uma fatia vertical por tela, o plano vai nos briefs) executadas
50+
com `/tarefa`//`/goal` como sempre. Mudança ampla sem tarefas = sem rastro.
51+
52+
Feche reportando: telas/tarefas, componentes do registry usados, o que ficou
53+
de fora e por quê, motion aplicado, próximos passos (`/test-ui`, `/tema`,
54+
`/componente`).

pi-templates/.pi/skills/fia/cookbooks/harness_bridge.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ produces tasks that get rewritten.
1616
Either path produces the same files:
1717

1818
- **Harness path**: the engineer runs `/start` in Claude Code.
19-
- **Pi path**: delegate in order — `start-mapper` (→ `ai-docs/map.yaml`), `screen-routes-generator` (→ `ai-docs/screens-routes.md`), `task-master-generator` (→ `ai-docs/todos/issues/NN-<slug>.md` + `ai-docs/todos/task-master.md`).
19+
- **Pi path**: delegate in order — `start-mapper` (→ `ai-docs/map.yaml`), `screen-routes-generator` (→ `ai-docs/screens-routes.md`), `task-master-generator` (→ `ai-docs/todos/issues/NN-<slug>.md` + `ai-docs/todos/task-master.md`), then `component-architect` (→ `ideal-components.md` + SEEDS `ai-docs/components/registry.md` — the briefs' reuse lock depends on a seeded registry) and `ui-component-page` (→ the live `/ui-components` page). The two component steps are the default; skip only if the engineer says "sem componentes".
2020

2121
After the artifacts land, show them to the engineer: `npm run plano -- --detach` opens the viewer's "Plano" view (screens, tasks, design system, generated files) at http://127.0.0.1:4600#plan. If the script is missing, just mention `npm run plano`.
2222

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Theme — interview → preview → approve → apply
2+
3+
`/tema` changes the project's visual identity (colors, typography, shape)
4+
with ZERO risk: a quick interview, a PREVIEW route rendering the existing
5+
design system with the proposed theme side by side with the current one, and
6+
NOTHING applied until the engineer approves. You orchestrate and interview;
7+
**app code (preview route, globals.css, layout) is FDA work** — hard rule 5.
8+
Talk to the engineer in pt-BR; translate every choice to plain language.
9+
10+
## Step 1 — Facts
11+
12+
`ai-docs/stack.md` (frontend → onde vivem os tokens; stacks Next recomendada/
13+
própria: `app/globals.css` + fontes no layout via `next/font`), o tema ATUAL
14+
(leia o arquivo de tokens), `ai-docs/PRD.md` (o produto guia a recomendação) e
15+
`ai-docs/components/registry.md` (a preview renderiza componentes REAIS).
16+
17+
## Step 2 — Interview (~6 perguntas, UMA por vez, sempre com recomendação)
18+
19+
1. Ponto de partida: ajustar o atual | preset do shadcn/create (cola o
20+
comando) | repensar do zero.
21+
2. Cor principal — aceita hex, nome ou VIBE ("passa confiança"); recomende
22+
pelo PRD.
23+
3. Acento + neutros (quentes × frios) — uma pergunta.
24+
4. Claro/escuro: ambos (recomendado) e qual o inicial.
25+
5. Tipografia: 3 pares prontos título+corpo que combinam com a vibe + "outra".
26+
6. Forma (presets): quadrado e denso | suave e padrão (recomendado) |
27+
arredondado e arejado.
28+
7. Detalhe livre opcional (gradiente, dark-first, bordas…).
29+
30+
## Step 3 — Preview via FDA (nada global muda)
31+
32+
Despache UM FDA (`fda_prompt`/`fda_build`) com a spec completa:
33+
34+
- Gerar TODOS os tokens do padrão do projeto (set shadcn: --background,
35+
--foreground, --card, --primary, --secondary, --muted, --accent,
36+
--destructive, --border, --input, --ring, --radius, charts… claro E
37+
escuro). Contraste WCAG AA nos dois modos é BLOQUEIO (texto ≥ 4.5:1).
38+
- Criar a rota de preview ao lado da página do design system
39+
(`app/ui-components/preview/page.tsx`): wrapper com as CSS variables
40+
redefinidas localmente + fontes `next/font` SÓ desta rota; conteúdo =
41+
Fundamentos + amostras dos componentes reais do registro, **lado a lado
42+
Atual × Proposto**, claro e escuro. Sem página `/ui-components` ainda →
43+
preview standalone com as amostras básicas.
44+
45+
Depois: "abra `/ui-components/preview` com `npm run dev`" — e espere.
46+
47+
## Step 4 — Aprovar | Ajustar | Desistir (loop)
48+
49+
- **Aprovar** → FDA de promoção: tokens para `globals.css` (claro+escuro),
50+
fontes no layout raiz, apagar a rota de preview, `npm run build` verde.
51+
Reporte valores e arquivos; commit só se o engenheiro pedir.
52+
- **Ajustar** → pergunte O QUE mudar (uma pergunta), regenere a preview
53+
(novo FDA pequeno). Quantas vezes precisar.
54+
- **Desistir** → FDA apaga a rota de preview. NADA mudou.
55+
56+
Regras duras: nunca aplicar sem aprovação explícita; só tokens do padrão do
57+
projeto; a página `/ui-components` (Fundamentos) já reflete o tema novo por
58+
ler as variáveis reais — não precisa editá-la.

src/steps/fia.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ export async function setupFia(ctx) {
7575
' /goal todas as tarefas até terminar',
7676
' /lancar colocar no ar — beta pública e produção de verdade (guiado)',
7777
' /componente adicionar componente ao design system (registro + página)',
78+
' /tema mudar cores/fontes/forma — preview para aprovar, depois aplica',
79+
' /design redesign de layout por referência (imagens), no design system',
7880
' /absorver projeto EXISTENTE → PRD as-built + mapa + manifesto de stack',
7981
' /status progresso e últimas execuções',
8082
'',

0 commit comments

Comments
 (0)