Arena
Arena: a linguagem do sistema de design Arena, servida a um agente como recursos e ferramentas MCP, em React ou Angular, conforme o projeto instalado.
Documentação
Arena by Dravensoft
Um design system, em React e em Angular, a partir de um único contrato.
Licença MIT · Design system orientado a tokens para React, Angular e Tailwind.

O que você obtém
Componentes com uma API contratada. Os mesmos componentes sob ambos os nomes de framework,
renderizando os mesmos pixels, sobre uma camada Tailwind compartilhada. Como um membro
é chamado, o que ele aceita, qual é seu padrão e o que significa estão escritos em
contracts/api/, e os tipos e tabelas de cada camada
são gerados a partir daí, para que as duas camadas não possam divergir silenciosamente. Todo
valor que um componente desenha é resolvido por meio de um token de design, então nenhum hex e nenhum
pixel puro fica em qualquer lugar dentro dele.
Acessibilidade vinculada por componente, em vez de auditada por versão. Cada
componente declara qual padrão implementa, a maioria deles das
Práticas de Autoria WAI-ARIA: os
papéis que carrega, as teclas às quais responde, onde o foco pousa, o que o dispensa. Um
requisito que ainda não atende é registrado ao lado dele com sua razão, e
bun run check:behaviour falha no dia em que um componente deixa de responder ao
padrão que nomeou.
Um núcleo de estilo, que é o que um projeto responde para parecer consigo mesmo. As
perguntas sobre forma, espaço, peso e profundidade são da Arena; as respostas são um
plugin de estilo que o projeto escreve, e a aparência que a Arena instala é um
desses plugins, em vez de um piso sob eles. Paletas e fontes ficam em um
arena.config.json, que o comando arena-to-prod que cada pacote envia transforma
na única folha de estilo que um pacote não pode carregar: A Arena carrega a linguagem e
nunca a pele, e nenhuma de suas próprias cores chega ao seu build.
Metadados para um produto que precisa ser encontrado, o que a maioria dos produtos não precisa. A
camada Angular escreve o documento <head> a partir das rotas que recebe, em
@dravensoft/arena-angular/metadata: composição de título, uma descrição, um
canônico e o par og:*, sem que nenhuma rota seja indexada até que ela diga isso. Esse
caminho de importação é um segundo ponto de entrada, então um projeto que nunca pede metadados
nunca instala o roteador por trás dele. React não escreve <head> nenhum, e ambas
as camadas publicam a trilha de navegação que desenham em termos de schema.org.
Oito produtos, desenhados duas vezes
Os bancos de teste são um conjunto de modelos que implementam
Arena: Calendly, ClickUp, Duolingo, Etsy, Grafana, Instagram, Notion e Superhuman, cada um simulado
duas vezes, uma em React e uma em Angular, a partir de um diretório arena.config.json e um design/
por par. Cada metade instala a Arena do npm e responde a um plugin de estilo próprio, então o que um par
mostra é a aparência de um projeto, em vez da Arena, e as duas metades de um par são a mesma
tela sob ambos os nomes de framework. Esse endereço é onde eles rodam, e
dravensoft-dev/arena-web-benches é onde
eles são escritos.
Por que um agente pode operá-lo
Uma API é um arquivo de contrato em vez de um parágrafo, e assim também é o padrão que um componente vincula e o papel que um plugin de estilo responde; um portão segura o código, a documentação e os pacotes publicados para eles. Um agente que recebe este repositório não adivinha a Arena: ele lê o contrato que governa o que está prestes a escrever, e o portão diz a ele quando errou.
Isso também é o que torna as regras aplicáveis em vez de aspiracionais. Cada uma
delas é decidida em contracts/design/AGENTS.md
e entregue a um construtor por
skills/design/SKILL.md, que declara cada uma por
extenso e diz quais delas um portão lê em seus próprios fontes.
- Tokens são a única camada de estilo.
- Não coloque classe própria em um componente da Arena.
- Perigo é contorno, nunca preenchido.
- Um acento primário por visualização.
- Sem gradientes, em nenhuma superfície.
- Sem emoji, no produto ou no texto.
- Ícones são strings de classe do Phosphor, nunca elementos e nunca SVG.
- Nunca envolva um componente da Arena no link do seu próprio roteador.
- Uma âncora que a Arena desenha divide suas ativações.
- Uma pressão que começa em um controle permanece nesse controle.
- Dois temas, escuro primeiro.
- Um gráfico carrega identidade ou significado, nunca ambos.
- O texto é formal e direto, no idioma do produto.
- Um membro obrigatório ausente é um bug do chamador.
- Nenhuma renderização decorre de você ter vinculado um ouvinte ou preenchido um slot.
- Alguns componentes respondem com um método em vez de um membro.
Instalação
bun add @dravensoft/arena-react # or @dravensoft/arena-angular
Essa é a instalação completa. Phosphor é um peer em vez de um segundo comando, porque a Arena renderiza nomes de classe de ícones e nunca SVG; a página da camada abaixo diz quais peers cada pacote declara.
Depois escreva arena.config.json, execute npx arena-to-prod (ou bunx, ou
pnpm exec), e importe o que ele escreve. frameworks/react/PACKAGE.md e
frameworks/angular/PACKAGE.md são tudo
isso, e são as páginas que o npm mostra.
Via MCP
{
"mcpServers": {
"arena": { "command": "npx", "args": ["-y", "@dravensoft/arena-mcp"] }
}
}
@dravensoft/arena-mcp é onde a linguagem viaja. Ele serve o roteador, as
referências e cada documento de componente a um agente que fala o Model
Context Protocol, como recursos e como ferramentas, e a camada que ele serve é a que
seu projeto instalou. Os pacotes de componentes carregam o código, as folhas de estilo
e os contratos aos quais seu próprio markup responde, e nenhuma da prosa.
Um corpus e os componentes que ele descreve são dois pacotes e dois números de
versão, então eles podem discordar. arena_start lê a versão do pacote da Arena
no seu projeto, compara com a do servidor e diz quando os dois
diferem. Onde diferem, os componentes estão certos e o texto está antigo.
Como plugin do Claude Code
/plugin marketplace add dravensoft-dev/arena
/plugin install arena@dravensoft
/reload-plugins
Atualização
/plugin marketplace update dravensoft # refresh the catalog: learns a new version exists
/plugin update arena@dravensoft # update the plugin you actually have
/reload-plugins # apply it to the running session
Uma versão significa um commit. Cada versão é servida a partir de sua tag git, com
a entrada do marketplace fixando source.ref em vX.Y.Z.
Como Skill de Agente autônoma
Entregue a qualquer agente skills/design/SKILL.md. É o
roteador, e responde a cada pergunta com um arquivo. Ele roteia sobre esta árvore,
então um agente que recebe o arquivo sozinho tem as perguntas e alcança as respostas por
URL; um que recebe o clone ou o plugin as alcança por caminho.
Um pacote de componente é código, e a linguagem alcança um agente por uma das três rotas acima. Instale o servidor MCP, instale o plugin ou entregue a skill, e o agente obtém as diretrizes, os contratos e o documento de uso de cada componente, que é o que transforma "integrar Arena" em uma tarefa que ele conclui sozinho.
Veja
arena.dravensoft.org carrega as diretrizes de design, a pia de cozinha e uma página de playground para cada componente, sem clone e sem nada para instalar.
As mesmas páginas aparecem localmente com bun run demos, a partir da mesma lista, e
scripts/build/AGENTS.md diz o que um clone novo
precisa construir antes que elas signifiquem algo.
Um agente lê llms.txt primeiro, que
roteia para as regras da linguagem e depois para um corpus por framework,
React e
Angular. Eles são separados de propósito: cada
componente é enviado sob ambos os nomes e os dois documentos não são intercambiáveis.
Dependências
- Fontes são auto-hospedadas, e nenhuma solicitação de CDN é feita. A Arena envia os binários
Archivo / Familjen Grotesk / Spline Sans Mono
.woff2emassets/fonts/, econtracts/design-generated/fonts.generated.cssos declara com@font-face, então eles carregam da mesma origem que a página que os lê. Um consumidor de pacote nomeia suas próprias três famílias emarena.config.json, ondesrcé uma URL de folha de estilo ou um binário que ele hospeda. - Ícones são Phosphor Icons (MIT), e não são
empacotados. Instale o pacote oficial por padrão, seja
@phosphor-icons/web(webfont) ou@phosphor-icons/react, para peso total e flexibilidade de tree-shaking. O CDN é uma conveniência apenas para protótipos, não o padrão. Veja Iconografia.
Qual versão estou obtendo
Os dois pacotes e o plugin nem sempre carregam o mesmo número, porque um
pacote publica apenas quando algo que ele envia mudou.
.github/workflows/AGENTS.md explica o que
isso significa para uma atualização.
Artefatos de projeto mais recentes
- Plugin do Repo/Claude Code: 11.1.0
- Pacote React do npm
- Pacote Angular do npm
- Pacote de contratos do npm
Para onde ir a seguir
Qual é este trabalho? Os dois públicos leem conjuntos quase disjuntos desses arquivos, e começar no ramo errado é como uma pergunta curta vira uma leitura longa.
Construindo algo com a Arena. skills/design/SKILL.md é o
roteador. A partir
dele: frameworks/INDEX.md é cada componente em uma
leitura e frameworks/<layer>/INDEX.md é a mesma lista sob os nomes do seu próprio
framework, o .prompt.md de cada componente é como usar aquele, e
frameworks/react/PACKAGE.md ou
frameworks/angular/PACKAGE.md é como
instalá-lo.
Trabalhando na própria Arena. AGENTS.md é a raiz desse
ramo, e tudo abaixo é alcançado através dele.
scripts/build/AGENTS.md: compile a Arena pela primeira vez, ou seja, o que uma máquina já precisa carregar, o que um clone novo deve construir antes quebun run demosoubun run checksignifiquem algo, e por que alguns arquivos gerados são rastreados e outros não. Linux e macOS são as duas plataformas suportadas; no Windows, o caminho suportado é WSL2, com o clone no sistema de arquivos Linux.frameworks/PACKAGING.md: o canal npm, ou seja, como os dois pacotes são montados a partir da árvore no lugar, por que uma Arena publicada não carrega pele, e o que o consumidor declara em vez disso.contracts/AGENTS.md: os três níveis de contrato da Arena, e um mapa de tudo neste repositório.contracts/design/AGENTS.md: a especificação de design normativa, cobrindo voz, tipografia, cor, espaçamento, movimento, a convenção de perigo, iconografia e temas.contracts/design/TokenTypes.mdao lado carrega o mapa de tipos de token DTCG, para quem autorar um token.frameworks/react/AGENTS.md: a camada React.frameworks/angular/AGENTS.md: a camada Angular, cuja própria última seção entrega a adoção à página do pacote acima.frameworks/tailwind/AGENTS.md: a camada Tailwind compartilhada.frameworks/demos/AGENTS.md: o fixture por trás da página de playground de cada componente, que é a única parte dessa página que alguém escreve.DOUBTS.md: o que conta como dívida na Arena, e onde os registros vivem.
Contribuindo e segurança
A Arena aceita pull requests de qualquer pessoa. CONTRIBUTING.md diz
quais mudanças vão direto para uma e quais começam como uma proposta, e o que uma mudança
não pode quebrar. SECURITY.md é para onde uma vulnerabilidade
vai, e CODE_OF_CONDUCT.md é o Contributor Covenant
ao qual este projeto se mantém.
Sobre
A Arena é a linguagem de interface única sob a qual cada produto de software da Dravensoft é construído, publicada sob a Licença MIT para que qualquer outra pessoa também possa construir sob ela.