Habilidades para criar temas e blocos

Um repositório de habilidades do Claude Code para criar temas do Discourse e componentes de bloco:

:toolbox: O que está incluído

Habilidade de Criação de Temas — abrange um escopo completo para construir um tema do Discourse: estruturação com o CLI discourse_theme, arquitetura SCSS, biblioteca de viewport, internacionalização, configurações, modificadores, transformadores de valor, ícones e variáveis CSS. Arquivos de referência detalhados para ícones, variáveis e transformadores são incluídos separadamente e podem ser carregados sob demanda.

Habilidade de Criação de Blocos — abrange o lado do tema da API de Blocos: criação de componentes de bloco com o decorador @block, definição de esquemas de argumentos, renderização de blocos nas saídas principais disponíveis, condições, blocos de contêiner e agrupamento de layout, além da integração de traduções e configurações do tema nos argumentos dos blocos.

Tema de Exemplo — um tema funcional com uma página inicial personalizada construída com blocos, demonstrando padrões reais para saídas, condições e composição de layout.


:jigsaw: Sobre a API de Blocos

A API de Blocos é o novo framework do Discourse para criar componentes de UI modulares e composáveis em temas e plugins. Os blocos são componentes Glimmer registrados em saídas nomeadas — como homepage-blocks, hero-blocks ou sidebar-discovery — e podem ser exibidos condicionalmente com base na rota, no usuário, na viewport, nas configurações do site ou na disponibilidade de plugins.

Uma das principais vantagens do sistema é que os blocos têm escopo pequeno e focado, com padrões consistentes. Isso os torna ideais para desenvolvimento assistido por IA: um modelo com a habilidade de blocos pode criar um componente de bloco funcional, registrá-lo em uma saída e configurar as condições em uma única execução.

O tema de exemplo neste repositório demonstra uma página inicial que se adapta com base nos plugins e conteúdos disponíveis. Veja como é a página inicial básica, com um bloco de destaque e uma lista de tópicos em destaque:

Quando condições adicionais são atendidas (uma tag em destaque está configurada, o plugin Discourse Events está ativo e o plugin Discourse Leaderboard está disponível), blocos adicionais são renderizados condicionalmente no layout:

Os blocos não se limitam à página inicial. O tema de exemplo também usa a saída sidebar-blocks para adicionar um link Início, a saída sidebar-discovery para adicionar conteúdo específico de categoria na barra lateral e um bloco category-banner no topo das páginas de categoria:

O inspetor de blocos no DevTools exibe os rótulos das saídas e os identificadores dos blocos sobrepostos na página. Isso facilita entender a estrutura do layout e depurar onde cada elemento está sendo renderizado:


:art: Uso com uma plataforma de design MCP

As habilidades funcionam bem com MCPs de plataformas de design (como o Penpot ou o Figma MCP). Com um conectado, o Claude pode ler especificações de componentes e tokens de design diretamente dos seus arquivos de design e implementá-los usando as convenções da habilidade. É um ciclo mais integrado entre design e código, especialmente ao trabalhar com um sistema de design estruturado.


:fork_and_knife: Faça um fork e ajuste

Algumas convenções nas habilidades refletem preferências pessoais, como a arquitetura de pastas SCSS. Você pode fazer um fork do repositório e ajustar as habilidades para atender ao seu próprio fluxo de trabalho e convenções.


:speech_balloon: Compartilhe o que você construiu

Experimente e nos conte como foi! Adoraríamos saber como você está usando as habilidades, o que construiu com elas e onde elas apresentam limitações. Comentários, correções e forks são todos bem-vindos.

Haverá um tópico dedicado a Blocks ou é este?

Se for o último, talvez alguns trechos de código possam ajudar? Ou o que está no arquivo plugin-api.gjs são as documentações atuais?

Obrigado.