Habilidades para crear temas y bloques

Un repositorio de habilidades de Claude Code para crear temas y componentes de bloques en Discourse:

:toolbox: Qué incluye

Habilidad de creación de temas — abarca un alcance completo para construir un tema de Discourse: generación de estructura con la CLI discourse_theme, arquitectura SCSS, biblioteca de vistas, localización, configuraciones, modificadores, transformadores de valores, iconos y variables CSS. Los archivos de referencia detallados para iconos, variables y transformadores se incluyen por separado y pueden cargarse bajo demanda. SKILL.md

Habilidad de creación de bloques — cubre el lado del tema de la API de bloques: escritura de componentes de bloque con el decorador @block, definición de esquemas de argumentos, renderizado de bloques en los puntos de conexión principales disponibles, condiciones, bloques contenedores y agrupación de diseño, e integración de traducciones y configuraciones del tema en los argumentos de los bloques. SKILL.md

Tema de ejemplo — un tema funcional con una página de inicio personalizada construida con bloques, que demuestra patrones reales para puntos de conexión, condiciones y composición de diseño.


:jigsaw: Sobre la API de bloques

La API de bloques es el nuevo marco de Discourse para crear componentes de interfaz de usuario modulares y composables en temas y plugins. Los bloques son componentes Glimmer registrados en puntos de conexión con nombre, como homepage-blocks, hero-blocks o sidebar-discovery, y pueden mostrarse condicionalmente según la ruta, el usuario, la vista, la configuración del sitio o la disponibilidad de plugins.

Una fortaleza clave del sistema es que los bloques tienen un alcance pequeño y enfocado, así como patrones consistentes. Esto los hace ideales para el desarrollo asistido por IA: un modelo con la habilidad de bloques puede generar un componente de bloque funcional, registrarlo en un punto de conexión y configurar las condiciones en una sola pasada.

El tema de ejemplo en este repositorio demuestra una página de inicio que se adapta según los plugins y el contenido disponibles. Así es como se ve la página de inicio básica, con un bloque principal y una lista de temas destacados:

Cuando se cumplen condiciones adicionales (se configura una etiqueta destacada, el plugin Discourse Events está activo y el plugin Discourse Leaderboard está disponible), se renderizan bloques adicionales condicionalmente en el diseño:

Los bloques no se limitan a la página de inicio. El tema de ejemplo también utiliza el punto de conexión sidebar-blocks para agregar un enlace Inicio, el punto de conexión sidebar-discovery para agregar contenido específico de categoría en la barra lateral, y un bloque category-banner en la parte superior de las páginas de categoría:

El inspector de bloques en DevTools muestra las etiquetas de los puntos de conexión y los identificadores de bloques superpuestos en la página. Esto facilita entender la estructura del diseño y depurar dónde se está renderizando cada elemento:


:art: Uso con una plataforma de diseño MCP

Las habilidades funcionan muy bien con MCPs de plataformas de diseño (como Penpot o Figma). Con uno conectado, Claude puede leer especificaciones de componentes y tokens de diseño directamente desde tus archivos de diseño e implementarlos usando las convenciones de la habilidad. Es un ciclo más estrecho entre diseño y código, especialmente al trabajar desde un sistema de diseño estructurado.


:fork_and_knife: Haz un fork y ajusta

Algunas convenciones en las habilidades son más preferencia que convención, como la arquitectura de carpetas SCSS. Puedes hacer un fork del repositorio y ajustar las habilidades para que coincidan con tu propio flujo de trabajo y convenciones.


:speech_balloon: Comparte lo que construyas

¡Pruébalo y cuéntanos cómo te fue! Nos encantaría saber cómo estás usando las habilidades, qué has construido con ellas y dónde tienen limitaciones. Los comentarios, correcciones y forks son bienvenidos.

¿Habrá un tema dedicado a Blocks o es este?

Si es lo segundo, ¿quizás algunos fragmentos de código podrían ayudar? ¿O lo que está en el archivo plugin-api.gjs es la documentación actual?

Gracias.

Aún habrá documentación que cubra toda la API de Bloques, incluida la implementación en el núcleo y en los complementos. Para la personalización con Bloques, el archivo SKILL.md ya debería abordar todos los aspectos relevantes. Es compacto y muy legible.

El tema de ejemplo incluye tanto archivos de inicializador como bloques. Los archivos de inicializador declaran la disposición por BlockOutlet: discourse-theme-skills/javascripts/discourse/api-initializers at main · discourse/discourse-theme-skills · GitHub.

¡Estoy disfrutando mucho de esto :winking_face_with_tongue: … Al igual que otras herramientas de diseño con IA, es muy eficiente para prototipar rápidamente ideas que habrían sido demasiado costosas de esbozar manualmente.

Pedí una página de inicio editorial con un estilo brutalista muy marcado, con contenido altamente inusual destacado de la comunidad. Obtuve este diseño, que de hecho tiene algunas ideas bastante interesantes para los bloques destacados. Lo más gracioso es que le puso de nombre al tema Periódico del Infierno :grinning_face_with_smiling_eyes:

Luego pedí algo que siempre he querido explorar: una página de inicio estilo portal japonés con bloques densos, colores pastel y muchas pequeñas animaciones… Me encanta esta primera versión:

En realidad, hace falta un vídeo de la pantalla, ya que todas esas pequeñas animaciones lo hacen mucho más atractivo:

flushy

¡Por fin!!! Lo probaré lo antes posible para actualizar mis componentes de tema experimentales :smiley:

Elmo rodeado de fuego intenso

¡Este es un gran trabajo y muy creativo! Si hacemos un fork y nos basamos en este tema, ¿hay consideraciones sobre el tema padre que no se mantenga actualizado con Discourse con el tiempo? Estoy tratando de pensar cómo debería abordarse esto.

¡Gracias por los recursos!

¡Gracias, @BrianC!

Sobre mantenerse actualizado en el tema principal: la rama de habilidades sigue de cerca las APIs de tema y Bloques de Discourse, por lo que mientras las usemos activamente, se mantendrán sincronizadas a medida que evolucionen las APIs. El tema de ejemplo es más bien una instantánea para demostrar patrones. Si haces un fork, eres dueño de tu fork. Pero puedes consultar las habilidades o nuevos ejemplos al actualizar tu tema.

Un objetivo central de la propia API de Bloques es tener una superficie de trabajo estable y pequeña, que ayude a mantener las personalizaciones resistentes a las actualizaciones de Discourse. Por lo tanto, si principalmente agregas bloques personalizados (como lo hace el tema de ejemplo), ya deberías estar operando en un entorno estable. Lo principal a vigilar serían cambios en los nombres de los puntos de salida (outlets) o en las firmas de la API de bloques. Por ahora, la API todavía se considera experimental, por lo que podrían haber cambios en los nombres, etc.

Yo plantearía el enfoque recomendado de la siguiente manera: haz un fork del tema libremente y utiliza la documentación de habilidades como referencia viva para saber cómo se deben hacer las cosas de ahora en adelante.