Compétences pour créer des thèmes et des blocs

Un référentiel de compétences Claude Code pour créer des thèmes Discourse et des composants de blocs :

:toolbox: Ce qui est inclus

Compétence de création de thème — couvre un champ complet de la création d’un thème Discourse : génération de squelette avec l’outil CLI discourse_theme, architecture SCSS, bibliothèque de vues, localisation, paramètres, modificateurs, transformateurs de valeurs, icônes et variables CSS. Des fichiers de référence détaillés pour les icônes, les variables et les transformateurs sont fournis séparément et peuvent être chargés à la demande. SKILL.md

Compétence de création de blocs — couvre l’aspect thème de l’API des blocs : écriture de composants de blocs avec le décorateur @block, définition des schémas d’arguments, rendu des blocs dans les sorties principales disponibles, conditions, blocs conteneurs et regroupement de mise en page, ainsi que l’intégration des traductions et paramètres du thème dans les arguments des blocs. SKILL.md

Thème d’exemple — un thème fonctionnel avec une page d’accueil personnalisée construite avec des blocs, démontrant des modèles réels pour les sorties, les conditions et la composition de la mise en page.


:jigsaw: À propos de l’API des blocs

L’API des blocs est le nouveau framework de Discourse pour créer des composants d’interface utilisateur modulaires et composites dans les thèmes et les plugins. Les blocs sont des composants Glimmer enregistrés dans des sorties nommées — comme homepage-blocks, hero-blocks ou sidebar-discovery — et peuvent être affichés conditionnellement en fonction de la route, de l’utilisateur, de la vue, des paramètres du site ou de la disponibilité des plugins.

Une force clé du système est que les blocs ont une portée petite et ciblée, ainsi que des modèles cohérents. Cela les rend particulièrement adaptés au développement assisté par IA : un modèle disposant de la compétence des blocs peut générer un composant de bloc fonctionnel, l’enregistrer dans une sortie et configurer les conditions en une seule passe.

Le thème d’exemple de ce dépôt démontre une page d’accueil qui s’adapte en fonction des plugins et du contenu disponibles. Voici à quoi ressemble la page d’accueil de base, avec un bloc héro et une liste de sujets en vedette :

Lorsque des conditions supplémentaires sont remplies (un tag en vedette est configuré, le plugin Discourse Events est actif et le plugin Discourse Leaderboard est disponible), des blocs supplémentaires sont rendus conditionnellement dans la mise en page :

Les blocs ne sont pas limités à la page d’accueil. Le thème d’exemple utilise également la sortie sidebar-blocks pour ajouter un lien Accueil, la sortie sidebar-discovery pour ajouter du contenu spécifique aux catégories dans la barre latérale, et un bloc category-banner en haut des pages de catégories :

L’inspecteur de blocs dans DevTools affiche les étiquettes des sorties et les identifiants de blocs superposés sur la page. Cela facilite la compréhension de la structure de la mise en page et le débogage de l’emplacement du rendu :


:art: Utilisation avec une plateforme de conception MCP

Les compétences fonctionnent bien avec les MCP de plateformes de conception (comme Penpot ou Figma MCP). Une fois connectée, Claude peut lire les spécifications des composants et les jetons de conception directement depuis vos fichiers de conception et les implémenter en suivant les conventions de la compétence. Cela crée une boucle plus étroite entre la conception et le code, surtout lorsque vous travaillez à partir d’un système de conception structuré.


:fork_and_knife: Fork et ajustement

Certaines conventions dans les compétences relèvent davantage de préférences que de normes, comme l’architecture des dossiers SCSS. Vous pouvez faire un fork du dépôt et ajuster les compétences pour qu’elles correspondent à votre propre flux de travail et à vos conventions.


:speech_balloon: Partagez ce que vous construisez

Essayez-le et faites-nous savoir comment cela se passe ! Nous aimerions savoir comment vous utilisez les compétences, ce que vous avez construit avec elles et où elles montrent leurs limites. Les retours, corrections et forks sont les bienvenus.

Y aura-t-il un sujet dédié aux Blocs ou s’agit-il de celui-ci ?

Si c’est le cas, peut-être que quelques extraits de code pourraient aider ? Ou bien ce qui se trouve dans le fichier plugin-api.gjs constitue-t-il la documentation actuelle ?

Merci.

Il y aura toujours une documentation couvrant l’ensemble de l’API des Blocs, y compris son implémentation dans le cœur du système et les plugins. Pour la thématique avec les Blocs, le fichier SKILL.md devrait déjà aborder tous les aspects pertinents. Il est concis et très lisible.

Le thème d’exemple inclut à la fois des fichiers d’initialisation et des blocs. Les fichiers d’initialisation déclarent la mise en page par BlockOutlet : discourse-theme-skills/javascripts/discourse/api-initializers at main · discourse/discourse-theme-skills · GitHub.

Amusons-nous un peu avec ça :winking_face_with_tongue: … Comme les autres outils de conception IA, il est vraiment performant pour prototyper rapidement des idées qui auraient été trop coûteuses à esquisser manuellement.

J’ai demandé une page d’accueil éditoriale au style très brutaliste, mettant en avant du contenu hautement inhabituel issu de la communauté. J’ai obtenu cette mise en page, qui propose en effet de très bonnes idées pour les blocs mis en avant. Le plus drôle, c’est qu’elle a nommé le thème Journal de l’Enfer :grinning_face_with_smiling_eyes:

Ensuite, j’ai demandé quelque chose que j’ai toujours voulu explorer : une page d’accueil de portail de style japonais avec des blocs denses, des couleurs pastel et beaucoup de petites animations… J’adore cette première proposition :

En fait, il faudrait une capture vidéo, car toutes ces petites animations la rendent encore plus agréable :

flushy

Enfin !!! Je vais l’essayer dès que possible pour mettre à jour mes composants de thème expérimentaux :smiley:

Elmo entouré de flammes intenses