agentleFS
ruyoutorruyoutor/agentic-archflow/skills/ui-architect/SKILL.md

ui-architect

Skill0 starsChanged 3 months agoMITView on GitHub

Desenha, constrói E EVOLUI a UI de um sistema, opcionalmente consumindo artefatos de DDD. Greenfield: de uma história de negócio (mini-mundo) via discovery (personas, jornadas, JTBD) → mapa de telas e wireframes → design system (tokens, catálogo, spec por tela) → implementação em cortes verticais com testes em paralelo via subagents; artefatos versionáveis em docs/ui/. MODO EVOLUÇÃO (brownfield): recebe um CHG-NNN da feature-loop (com mockup de UX quando houver), promove o mockup a spec de componente, responde 'o que muda na interface?' e 'quais trade-offs?' (análise de impacto com checkpoint humano duro) antes de construir cirurgicamente a fatia e evoluir o design system com histórico de revisões — sem commit de entrega (a aterrissagem é da feature-loop). Triggers: 'desenhar a UI de X', 'arquitetar a interface de Y', 'construir frontend a partir do domínio', 'design-first UI', 'gerar UI a partir do DDD', 'trabalhar a fatia CHG-NNN em modo evolução', ou invocação explícita da skill. Stack default Vite+React+TS+Tailwind+shadcn/ui, com override (next-app-router, remix, sveltekit, etc). Mobile nativo fora de escopo (vira skill irmã se vier demanda).

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. openobserve/openobserve★ 23ksame name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository2 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Detectar stack: Default vite-react-ts. Se o usuário passou stack=<nome> ou mencionou outra stack, use-a.

    line 57

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

ui-architect

Constrói a UI de um sistema a partir de um mini-mundo, em quatro fases checkpointadas — e evolui UIs já construídas em fatias, no modo evolução. Cada fase produz um artefato em docs/ui/ (no projeto target, não na skill). Quando o projeto tem docs/ddd/, a skill consome esses artefatos como input. A implementação trabalha em cortes verticais por use case, não por camada horizontal.

Fluxo

Dois modos:

Greenfield (do mini-mundo à v1):

FaseMétodoArtefato
1. UX Discoveryphases/01-discovery.mddocs/ui/01-discovery.md
2. IA & Fluxosphases/02-ia-flows.mddocs/ui/02-ia-flows.md + diagramas Excalidraw
3. Design systemphases/03-design-system.mddocs/ui/03-design-system.md
4. Implementaçãophases/04-implementation.mdcódigo + docs/ui/04-build-log.md

A fase 4 se organiza em sub-fases (4.0 fundação → 4.1..N cortes verticais por use case → 4.Z smoke).

Evolução (brownfield — entrada é um CHG-NNN da feature-loop, com mockup de UX quando houver):

FaseMétodoSaída
E1. Impacto + promoção do mockupphases/evolution.mdmockup → spec de componente; seções 6–7 do CHG (checkpoint humano duro)
E2. Construção cirúrgicaphases/evolution.mddiff da fatia, suíte inteira + build verdes
E3. Artefatos + relatóriophases/evolution.mddesign system/specs evoluídos com histórico de revisões; sem commit de entrega

Protocolo de ativação

Ao ativar a skill:

  1. Detectar o modo. Se a entrada é um CHG-NNN em docs/changes/ (handoff da feature-loop) ou o usuário pede pra evoluir/mudar uma UI que já tem docs/ui/ + código construído → modo evolução: leia phases/evolution.md e siga por ele (as fases 1–4 abaixo são o repertório, não o roteiro). Caso contrário, greenfield.
  2. Detectar estado (greenfield). Verifique se docs/ui/ existe no projeto target. Se sim, liste os artefatos presentes e pergunte: retomar, revisar fase específica, ou recomeçar. Pule fases já concluídas a menos que o usuário peça revisão.
  3. Detectar artefatos de DDD. Verifique se docs/ddd/ existe. Se sim, informe ao usuário quais artefatos foram encontrados e que serão usados como input nas fases correspondentes. Se não existe, a skill funciona standalone a partir do mini-mundo bruto — peça o mini-mundo se não foi fornecido.
  4. Detectar contrato de backend (gate duro). Antes de desenhar qualquer tela (fase 2 em diante), localize e leia o contrato real do backend — não a intenção de design. O contrato tem duas metades, e é a segunda que passa despercebida:

    Forma — que campos existem, de que tipo, nuláveis, presentes quando: (a) OpenAPI/Swagger (openapi.{yaml,json}, swagger.*, rota servida tipo /openapi.json) — fonte primária de forma; (b) ADRs e decisões (docs/ddd/03-architecture.md) — onde mora o que foi decidido não fazer; (c) tático (docs/ddd/02-tactical.md).

    Semântica — o que cada campo significa: unidade, granularidade, janela, causa, e o que o handler faz nos ramos de erro. Isso não está no OpenAPI, e a fonte é o código-fonte do backend — handler, projeção, serviço de domínio. estagnado: { type: boolean } é uma descrição perfeitamente correta e semanticamente vazia: nada nela diz se a janela é de 4 semanas ou de 4 séries, e a tela que narra o campo vai afirmar uma das duas ao usuário.

    Gatilho, pra não virar "leia o backend inteiro": precisa de leitura de código todo campo que a tela vai interpretar — booleano cujo nome implica uma regra, número com unidade implícita, array cuja granularidade a tela vai narrar, campo que vira frase. Campo que a tela só imprime, não.

    O inventário tem duas colunas: forma (do OpenAPI) e semântica (do código, com arquivo:linha), mais as não-capacidades explícitas (ex.: "snapshot-only, sem série histórica"). Se nenhuma fonte existe e o projeto não foi declarado greenfield, pare e pergunte ao usuário onde mora o contrato. Esse inventário é restrição dura das fases 2–4.

    Artefato de contrato bem-formado ≠ contrato compreendido, e nenhum teste cobre a diferença. O teste confere a copy contra o spec, e o spec é onde a suposição errada foi escrita — suíte verde prova coerência entre spec e código, nunca que o spec descreve o domínio. Aqui não existe defesa de tipo possível: boolean continua boolean seja a janela de 4 semanas ou de 4 séries. A única defesa é ler o código antes de escrever o spec, e custa minutos.

  5. Obter o mini-mundo. Se o usuário não forneceu e não há docs/ddd/01-strategic.md, peça. Sondar: atores, contextos de uso, dispositivos-alvo, restrições visuais.
  6. Detectar stack. Default vite-react-ts. Se o usuário passou stack=<nome> ou mencionou outra stack, use-a. Leia templates/stacks/<stack>.md. Se o arquivo não existir, pare e peça ao usuário as convenções; escreva o arquivo de stack antes de prosseguir.
  7. Rodar fase a fase, com checkpoint. Leia o arquivo de método da fase, conduza o trabalho em conversa, escreva o artefato usando o template correspondente, apresente, pause. Não avance sem ordem do usuário.

Protocolo de checkpoint

Após cada fase:

  • Salve o artefato no caminho documentado.
  • Diga: "Salvei em <path>. Revise/edite o arquivo. Quando quiser seguir pra fase N+1, me diga seguir, ou aponte ajustes."
  • Se o usuário editar o .md manualmente, a versão editada vira a fonte da verdade — a próxima fase lê do disco, não da memória da conversa.

Regras transversais

  • Os artefatos são o contrato entre fases. A fase N+1 nunca usa informação da fase N que não esteja escrita no artefato. Se o artefato está vago, conserte o artefato — não compense na próxima fase.
  • Não modifique artefatos de DDD. Se identificar gap (ex.: JTBD sem use case correspondente, tela que precisa de comando ausente no tático, ou capacidade que o backend não expõe — campo, endpoint, série de dados), sinalize ao usuário em vez de inventar. Gaps de DDD e de capacidade são consertados via ddd-architect / backlog de backend, não via ui-architect.
  • Todo elemento de tela rastreia a uma capacidade do contrato (proveniência). Cada métrica/componente do spec carrega de onde vem (ex.: GET /api/portfolio → absoluteDifference). O que não tem fonte no contrato é marcado (sem fonte no backend) — vira gap explícito, nunca renderizado fingindo existir. Esta flag é informativa (sinaliza, não bloqueia o fluxo).
  • Achado que exige trabalho futuro vira demanda no inbox — inclusive quando é da própria UI. As regras de roteamento cobrem bem o que é do backend (gap de capacidade, mockup aspiracional); o buraco é o defeito que a fatia encontra na UI já construída e decide, corretamente, não consertar por estar fora de escopo. Ele vai para docs/changes/ como demanda, inclusive quando a fatia o consertou numa tela e não nas outras. Declarar no build-log é honestidade, mas não substitui: ninguém tria pelo build-log — ele é narrativa da fatia. O que se perde assim é sempre defeito conhecido em tela já commitada, a categoria mais barata de consertar e a mais fácil de esquecer.
  • Aspiracional vs. construível. Mockups que exploram a UX ideal são bem-vindos, mas devem ser rotulados: construível = preso ao contrato, é o que a fase 4 implementa; aspiracional = pode exceder o backend, desde que marcado. Todo excesso de um mockup aspiracional vira demanda registrada (backlog de docs/ddd/ ou ddd-architect), não gambiarra no front. Nunca apresente um aspiracional como se fosse construível.
  • Seja explícito sobre incerteza. Ao propor um modelo, decisão de IA ou componente, liste alternativas consideradas e o porquê da escolha. Tradeoffs vão no artefato, não só na conversa.
  • Dependência nova segue a mesma política do backend (ddd-architect/phases/03-architecture.md, passo 8), com as barras do front: estabeleça o menu real (o que custa de fato não usar a lib — quase nunca é zero); aceite quando encapsula complexidade essencial ou risco de correção, a procedência é primária/padrão-de-fato, e ela fica confinada num módulo próprio; declare o custo em número — aqui é peso no bundle e superfície de CVE transitiva, não módulos linkados. A barra sobe conforme a proximidade do núcleo: lib que entra num componente é diferente de lib que entra na camada de dados ou no formato do que se persiste.
  • Não superdesenhe. Calibre a complexidade pelo mini-mundo. Sistema pequeno não precisa de 5 personas e 10 jornadas. Cada fase explicita esse julgamento.
  • Não invente requisitos. Se o usuário não disse, não escreva como se ele tivesse dito. Quando faltar info, pergunte.
  • Não desenhe telas antes da fase 2. Discovery é sobre quem/quê/por quê. Telas vêm depois.
  • Em modo evolução: editar, não reescrever; escopo = fatia; sem commit de entrega. O mockup de UX da história é promovido a spec de componente ANTES de construir; a análise de impacto para no checkpoint humano. Exceção nomeada — o commit de congelamento: o spec da fatia é commitado antes do despacho dos agents (docs(ui): congela spec da fatia CHG-NNN), porque ele é o contrato de convergência e o hash é o registro da versão que cada agent leu. Essa exceção cobre artefato de contrato, nunca código de produção nem a entrega — quem aterrissa continua sendo a feature-loop, e a aterrissagem confere que os commits de congelamento tocaram só docs/. Superfície testável existente (testids/copy/roles assertados) só muda com decisão registrada. Artefatos existentes são editados com entrada no histórico de revisões (CHG-NNN). Lacuna de produto/UX devolve o card à feature-loop.

Agents (dependências)

A fase 4 despacha agents dedicados em paralelo (não general-purpose). Eles devem estar instalados em ~/.claude/agents/:

AgentUsado emStatus
ui-component-test-generator4.1..N✓ em agents/
ui-component-code-generator4.1..N✓ em agents/

Os dois rodam em paralelo, cegos um pro outro, e convergem pelo spec de componente (superfície testável: props, estados, copy, data-testid/roles) + os tipos da OpenAPI + as signatures dos hooks de api.ts. Os agents são versionados junto com a skill (mesmo repo).

Se o cumprimento de uma instrução depende de um parâmetro de tool, a instrução nomeia o parâmetro — ou é decoração. Escrever "despache ambos em Sonnet" não garante nada: sem model na chamada da tool Agent, o agent herda o modelo da sessão, e ninguém percebe — não há erro, não há aviso, a instrução parece cumprida. Vale para model, isolation, subagent_type e execução em background. É a mesma classe de falha que a regra "separe o julgamento pela ferramenta, não pela promessa" nomeia para permissão, aplicada a capacidade.

isolation: "remote" tem uma pré-condição silenciosa: o estado que o agent vai ler precisa existir no remoto. Antes de despachar remoto, verifique e reporte: (a) a branch tem upstream; (b) HEAD está publicado; (c) os artefatos que o agent precisa ler (specs, stubs, contratos) estão rastreados e commitados. Se qualquer um falhar, apresente a escolha ao usuário (publicar × rodar local) em vez de despachar — a falha aqui não é um erro, são dois agents produzindo trabalho plausível contra a árvore errada. E satisfazer a pré-condição exige push, que é ação externa: decisão humana, nunca passo automático.

Agent faltante — diagnostique antes de prescrever. Agent type '<nome>' not found tem dois modos de falha, com remediações diferentes e incompatíveis. Rode ls ~/.claude/agents/ antes de reportar:

  • arquivo ausente → instalar o agent (estão em agents/ no repo da skill);
  • arquivo presente, tipo não registrado → a lista de agents de uma sessão em execução não relê o disco. Só sessão nova resolve; pedir recarga em sessão viva não tem efeito e queima um ciclo de ida e volta com o usuário.

Agent que morreu no meio pode ter entregado. Estouro de limite de gasto, timeout ou interrupção deixam o que já foi escrito intocado em disco — o que não voltou foi o relato, não necessariamente o trabalho. Antes de propor reexecução, liste os artefatos que ele deveria ter produzido e reporte o que existe. Reexecutar às cegas paga de novo exatamente quando o orçamento acabou, e o agent novo pode sobrescrever com outra variante arquivos que o par cego já consumiu.

Arquivos

  • phases/01-discovery.md — método de UX discovery (personas, JTBD, jornadas, requisitos NF, restrições)
  • phases/02-ia-flows.md — método de IA e fluxos (mapa de telas, navegação, controles transversais)
  • phases/03-design-system.md — método de design system (tokens, catálogo, spec por componente)
  • phases/04-implementation.md — orquestrador: fundação + cortes verticais despachando os 2 agents
  • phases/evolution.md — modo evolução (brownfield): promoção do mockup a spec + análise de impacto com checkpoint duro → construção cirúrgica → evolução de artefatos; entrada CHG-NNN, entrega sem commit (exceto o congelamento do spec)
  • templates/01-discovery.md.tmpl — template do artefato de discovery
  • templates/02-ia-flows.md.tmpl — template do artefato de IA & fluxos
  • templates/03-design-system.md.tmpl — template do artefato de design system (tokens + catálogo + specs)
  • templates/component-spec.md.tmpl — spec de componente (contrato de convergência dos agents)
  • templates/stacks/vite-react-ts.md — convenções da stack default
  • agents/ui-component-code-generator.md, agents/ui-component-test-generator.md — agents da fase 4

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.