O que as pessoas estão realmente fazendo
O padrão que está surgindo nos catálogos de habilidades de agentes é pegar o Apple's Human Interface Guidelines — ou o Material, ou a orientação de acessibilidade de uma plataforma — e republicá-lo como algo que um agente carrega antes de construir a UI. Um conjunto publicado divide o HIG em quatorze habilidades que cobrem plataformas, fundamentos e componentes: layout, controles, diálogos, menus, busca. Outros o entregam como uma única habilidade de design que promete componentes nativos, tipografia adequada e cores semânticas.
Este é um bom instinto. Um agente de código solicitado para criar uma tela de configurações do iOS sem orientação produzirá algo que funciona, mas que parece sutilmente errado: um modal onde um push seria o convencional, um controle que existe na web e não na plataforma, alvos de toque dimensionados para um mouse. Carregar as regras da plataforma resolve uma classe real de erros, e resolve de forma barata.
Isso também faz algo que as pessoas não esperam, o que merece precisão.
O que sobrevive à tradução e o que não sobrevive
| Exemplo | O que o agente faz com isso | |
|---|---|---|
| Regras prescritivas | Alvo de toque mínimo, qual controle para cada função, quando um sheet vence um push, mínimos de contraste | Aplica-as de forma confiável. Estas são verificáveis, portanto, uma resposta errada é visivelmente errada |
| Princípios | "Clareza", "deferência", "profundidade" | Concorda com eles e depois faz o que já ia fazer de qualquer forma |
Essa segunda linha é o problema central, e não é algo específico da Apple. Uma instrução infalsificável não pode mudar o comportamento, porque o modelo pode satisfazê-la com qualquer coisa que ele já acredite que a palavra significa. Peça clareza e você obterá a ideia mediana de clareza do modelo, que é a mesma de todos os outros modelos, e é por isso que tantas UIs construídas por agentes convergem para as mesmas superfícies quase pretas, a mesma paleta de uma única cor de destaque e cinza, os mesmos cards com cantos uniformemente arredondados.
Um agente pode seguir uma regra. Ele só pode concordar com um princípio.
Medimos a mesma falha na prática. Em 299 arquivos DESIGN.md públicos — os documentos que desenvolvedores escrevem especificamente para que um agente os siga — 54% contêm pelo menos um adjetivo não mensurável, mais frequentemente "clean" (39%) ou "modern" (36%), e 44% nunca declaram um único valor de tamanho concreto. Esses arquivos parecem direcionamento de design e funcionam como um acordo.
O que uma diretriz de plataforma não está tentando te dar
Aqui está a parte que surpreende as pessoas que instalam uma habilidade de HIG esperando que seu app comece a ficar bonito: as diretrizes de plataforma são deliberadamente compartilhadas. Todos os apps da plataforma as seguem. Esse é o ponto principal — um usuário deve ser capaz de abrir um app que nunca viu e saber como ele funciona. A conformidade é o objetivo, e a identidade não é explicitamente.
Portanto, uma skill de HIG pode tornar sua interface *correta* — componentes certos, navegação certa, tamanhos de alvo certos, contraste certo — e ser correto não é o mesmo que ser distintivo. Se duas equipes carregarem a mesma diretriz e nenhum outro contexto de design, elas deverão produzir interfaces intercambiáveis. E geralmente produzem.
Isso é uma vantagem, até que deixa de ser
Para um utilitário, um plugin ou qualquer coisa incorporada ao ambiente de terceiros, misturar-se ao entorno é a resposta certa e a diretriz é o briefing completo. A incompatibilidade só aparece quando o que está sendo construído é um produto que precisa ser reconhecível — e isso geralmente é descoberto por volta da quinta tela.
A configuração de duas camadas
Uma vez que você enxerga isso como dois trabalhos distintos, a solução torna-se óbvia e as camadas param de conflitar entre si.
| Camada de plataforma | Camada de identidade | |
|---|---|---|
| Respostas | Como isso deve se comportar aqui? | Qual deve ser a aparência disso em todos os lugares? |
| Fonte | As diretrizes da plataforma, como uma skill ou arquivo de regras | Seu conjunto de tokens e regras escritas, no repo |
| Muda quando | A plataforma muda | Sua marca muda |
| Falha se estiver ausente | UI com aparência correta, mas que parece estranha na plataforma | UI perfeita para a plataforma, indistinguível de qualquer outro app |
Mantenha-as em arquivos separados. É tentador fundir sua marca na skill de HIG para ter apenas um item para carregar, mas isso dará errado na primeira atualização da plataforma ou no primeiro rebranding, porque você terá que desvendar quais frases pertenciam a quem.
Token specimen · real values
Ambient Sage
Live renderAmbient Sage's actual tokens — the same values its exports use.
Color tokens
Ambient Sage
Core
background
H 72 · C0, 0, 2, 4
foreground
H 84 · C7, 0, 18, 89
card
H 70 · C0, 0, 3, 10
muted
H 80 · C1, 0, 3, 7
border
H 69 · C0, 0, 3, 15
Brand
primary
H 53 · C0, 8, 68, 0
primary-fg
H 84 · C7, 0, 18, 89
secondary
H 70 · C0, 0, 3, 10
accent
H 52 · C0, 8, 60, 3
ring
H 53 · C0, 8, 68, 0
Semantic
destructive
H 6 · C0, 70, 78, 25
destructive-fg
H 0 · C0, 0, 0, 0
success
H 130 · C61, 0, 51, 55
warning
H 35 · C0, 38, 91, 21
muted-fg
H 84 · C2, 0, 6, 66
Charts
chart-1
H 53 · C0, 8, 68, 0
chart-2
H 210 · C65, 33, 0, 17
chart-3
H 142 · C44, 0, 28, 25
chart-4
H 340 · C0, 48, 32, 12
chart-5
H 33 · C0, 30, 68, 9
Typography
Ambient Sage
Scale: compact-product
Density: balanced
Heading · Plus Jakarta Sans · 1.875rem
Sample headline
Subheading · Plus Jakarta Sans · 1.375rem
A warm-sage neutral-surface mobile kit with a single vivid yellow accent, flat tonal cards, and oversized display numerals.
Body · Plus Jakarta Sans · 1rem
Ambient Sage uses a near-white warm-sage canvas (#f3f4ef) with card panels distinguished only by a tonal shift to #e5e6e0, never by shadows or borders. A single vivid yellow (#fee951) is the only saturated color and appears sparingly at component scale as orbs, button fills, and focus rings. Primary data values render as oversized bold hero numerals with a small superscript unit. Typography is a friendly rounded geometric (Plus Jakarta Sans) with no uppercase and no tight tracking, while JetBrains Mono is reserved for hex codes and technical strings. Generous rounding and luminance-only contrast give the whole system a calm, minimal feel.
Mono · JetBrains Mono · 0.8125rem
npx shadcn add ambientsage.json
Aa
Plus Jakarta Sans · Heading
Aa
Plus Jakarta Sans · Body
ABCDEFGHIJKLM NOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 & @ # % →
Tokens
Ambient Sage primitives
Radius scale
Component radius
Elevation
Spacing · base 4px
Escrevendo uma regra que um agente consiga verificar
O teste é simples: alguém poderia olhar para o resultado e dizer, sem discussão, se a regra foi seguida? Se duas pessoas razoáveis pudessem discordar, o agente também discordará, e resolverá a divergência a favor de seus padrões (defaults).
| Acordado com | Seguido | |
|---|---|---|
| Cor | Use uma paleta limpa e moderna | Use apenas os tokens semânticos. Nunca use um hex bruto em um componente. Um destaque por tela |
| Tipografia | A tipografia deve parecer refinada | Duas famílias: display e body. Escala de passos em 1.25×. Nunca use um terceiro peso no corpo do texto |
| Superfícies | Mantenha as superfícies leves e arejadas | Cards são planos. Sem sombra em superfície plana. Borda de 1px, token border |
| Modo escuro | Suporte ao modo escuro | Cada função de cor definida em ambos os modos. Nunca envie uma alteração de modo claro sem sua contraparte no modo escuro |
Observe que muitas das entradas à direita são proibições. Isso não é uma escolha estilística: uma preferência adiciona uma opção, enquanto uma proibição remove todas as outras. "Use nosso verde" mantém todos os padrões genéricos como válidos; "nunca introduza uma cor que não seja um token" não permite isso. Em nosso corpus, 76% dos arquivos listavam apenas preferências, o que é a descrição exata do porquê de eles pararem de funcionar.
Quando a diretriz e a sua marca divergem
Isso acontece com menos frequência do que as pessoas temem, pois as duas camadas geralmente abordam questões diferentes. Quando ocorre, costuma ser um de três casos, e apenas um deles é um conflito real.
- Mínimos de acessibilidade versus cor da marca. Não é um conflito. O mínimo prevalece, e a sua cor de destaque precisa de ajuste para aquela superfície. Um agente instruído explicitamente sobre isso o fará; um agente deixado à própria escolha geralmente manterá a cor da marca, pois essa instrução pareceu mais específica.
- Convenção de plataforma versus padrão interno. Um trade-off real. Decida uma vez, escreva qual prevalece e por quê, e coloque isso na camada de identidade para que não seja rediscutido a cada tela.
- Estilização padrão da plataforma versus seus tokens. Não é um conflito, embora pareça. As diretrizes especificam qual controle usar; raramente especificam a cor exata. Use o componente da plataforma, estilizado com os seus tokens.
Defina qual camada prevalece, no arquivo
Um agente com dois documentos sem precedência declarada escolherá a cada turno, e não dirá qual escolheu. Uma única linha — "em caso de conflito, prevalecem os mínimos de acessibilidade, depois as convenções da plataforma e, por fim, o estilo interno" — elimina toda uma categoria de inconsistência que, de outra forma, seria quase impossível de diagnosticar pelo resultado final.
Configuração prática
- 1
Carregue a camada da plataforma como uma skill ou arquivo de regras
Seja o que o seu agente suportar — uma skill,
.cursor/rules,.devin/rules, uma seção no CLAUDE.md. Mantenha o mais próximo possível da diretriz original, para que possa ser substituído integralmente quando a plataforma for atualizada. - 2
Coloque a camada de identidade no repo
Um arquivo de tokens mais um DESIGN.md com suas regras e proibições. Ele deve estar no repositório em vez de em um prompt, porque o agente precisa relê-lo a cada tarefa, assim como a próxima pessoa que assumir o projeto.
- 3
Declare a precedência uma única vez
Uma frase no topo do arquivo de identidade nomeando o que prevalece em caso de conflito.
- 4
Teste na tela que ninguém desenhou
Peça algo plausível que nenhuma das camadas previu — um estado vazio, um erro de permissão, um controle de paginação. O que o agente inventar é como será cada caso não mapeado, e essa é a sua real medida de cobertura.
O último passo é o que vale a pena repetir. Ambas as camadas cobrem os casos em que alguém pensou. Em um produto construído por agente, a maioria das telas são casos em que ninguém pensou, e é por isso que a camada de identidade deve declarar regras gerais e proibições, em vez de enumerar componentes. Mais sobre o que pertence a esse arquivo: o que é um DESIGN.md.
A camada de identidade, como um único arquivo instalável
Cada kit do Identity Forge é serializado em um DESIGN.md completo — tokens semânticos em light e dark, um pairing de fontes real, motivos e proibições explícitas — junto com o arquivo de tokens. Ele fica ao lado de qualquer orientação de plataforma que você carregar, e nunca conflita com ela.
FAQ
Um agente de IA consegue seguir as Human Interface Guidelines da Apple?
As partes prescritivas, sim — escolha de controles, padrões de navegação, alvos de toque mínimos, contrastes mínimos. Estes são verificáveis, então o agente os aplica com precisão. As partes principiológicas — clareza, deferência, profundidade — não conseguem mudar o comportamento, porque um agente satisfaz uma instrução não falsificável com o que ele já acredita que a palavra significa.
Uma skill de HIG fará meu app ficar bonito?
Fará com que ele fique correto, o que é diferente. As diretrizes de plataforma são deliberadamente compartilhadas por todos os apps da plataforma para que os usuários possam transferir conhecimento entre eles. Duas equipes carregando a mesma diretriz e nada mais deveriam produzir interfaces intercambiáveis. A distinção vem de uma segunda camada: seus próprios tokens e regras.
As diretrizes de plataforma e o meu design system devem ficar em um único arquivo?
Não. Eles mudam em cronogramas diferentes — um quando a plataforma atualiza, outro quando a sua marca muda — e fundi-los significa ter que desmembrar quais frases pertencem a quem futuramente. Mantenha dois arquivos e declare qual prevalece em caso de conflito.
O que eu faço quando uma cor da marca não atinge o mínimo de acessibilidade?
O mínimo prevalece e a cor de destaque precisa de ajuste para aquela superfície. Declare isso explicitamente em suas regras: um agente deixado à própria escolha geralmente mantém a cor da marca, porque essa instrução pareceu mais específica do que uma nota geral de acessibilidade.
Como sei se uma regra está escrita bem o suficiente para um agente?
Pergunte se um revisor poderia olhar para o resultado e dizer, sem discussões, que a regra foi seguida. "Use uma paleta limpa" falha nesse teste. "Use apenas os tokens semânticos, nunca um hex puro, um destaque por tela" passa no teste.