Competenze per la creazione di temi e blocchi

Un repository di competenze per Claude Code per la creazione di temi e componenti a blocchi per Discourse:

:toolbox: Cosa è incluso

Competenza per la creazione di temi — copre un ambito completo per la costruzione di un tema Discourse: scaffolding con il CLI discourse_theme, architettura SCSS, libreria viewport, localizzazione, impostazioni, modificatori, trasformatori di valori, icone e variabili CSS. Sono inclusi separatamente file di riferimento dettagliati per icone, variabili e trasformatori, che possono essere caricati su richiesta. SKILL.md

Competenza per la creazione di blocchi — copre il lato tema della Blocks API: scrittura di componenti a blocchi con il decoratore @block, definizione degli schemi degli argomenti, rendering dei blocchi negli outlet core disponibili, condizioni, blocchi contenitore e raggruppamento del layout, e integrazione delle traduzioni e impostazioni del tema negli argomenti dei blocchi. SKILL.md

Tema di esempio — un tema funzionante con una homepage personalizzata costruita con blocchi, che dimostra pattern reali per outlet, condizioni e composizione del layout.


:jigsaw: Informazioni sulla Blocks API

La Blocks API è il nuovo framework di Discourse per la creazione di componenti UI modulari e componibili nei temi e nei plugin. I blocchi sono componenti Glimmer registrati in outlet denominati — come homepage-blocks, hero-blocks o sidebar-discovery — e possono essere visualizzati condizionalmente in base a route, utente, viewport, impostazioni del sito o disponibilità dei plugin.

Un punto di forza chiave del sistema è che i blocchi hanno un ambito ristretto e focalizzato e pattern coerenti. Questo li rende adatti allo sviluppo assistito da AI: un modello con la competenza sui blocchi può generare rapidamente un componente a blocco funzionante, registrarlo su un outlet e configurare le condizioni in un’unica passata.

Il tema di esempio in questo repository dimostra una homepage che si adatta in base ai plugin e ai contenuti disponibili. Ecco come appare la homepage di base, con un blocco hero e un elenco di argomenti in evidenza:

Quando vengono soddisfatte condizioni aggiuntive (un tag in evidenza è configurato, il plugin Discourse Events è attivo e il plugin Discourse Leaderboard è disponibile), vengono renderizzati condizionalmente ulteriori blocchi nel layout:

I blocchi non sono limitati alla homepage. Il tema di esempio utilizza anche l’outlet sidebar-blocks per aggiungere un link Home, l’outlet sidebar-discovery per aggiungere contenuti specifici per categoria nella barra laterale e un blocco category-banner nella parte superiore delle pagine delle categorie:

L’ispettore dei blocchi su DevTools mostra le etichette degli outlet e gli identificatori dei blocchi sovrapposti alla pagina. Questo rende facile comprendere la struttura del layout e debuggare dove viene renderizzato ogni elemento:


:art: Utilizzo con una piattaforma di design MCP

Le competenze si integrano perfettamente con le MCP delle piattaforme di design (come Penpot o Figma MCP). Connesso uno di questi, Claude può leggere le specifiche dei componenti e i token di design direttamente dai file di design e implementarli seguendo le convenzioni della competenza. È un ciclo più stretto tra design e codice, specialmente quando si lavora su un sistema di design strutturato.


:fork_and_knife: Fork e personalizzazione

Alcune convenzioni nelle competenze sono più una preferenza che una regola, come l’architettura delle cartelle SCSS. Puoi fare un fork del repository e adattare le competenze per allinearle al tuo flusso di lavoro e alle tue convenzioni.


:speech_balloon: Condividi ciò che crei

Prova e facci sapere come va! Siamo felici di sapere come stai utilizzando le competenze, cosa hai costruito con esse e dove mostrano limiti. Feedback, correzioni e fork sono tutti benvenuti.

Ci sarà un argomento dedicato ai Blocchi o è questo?

Se è quest’ultimo, forse alcuni frammenti di codice potrebbero essere d’aiuto? O ciò che si trova nel file plugin-api.gjs costituisce la documentazione attuale?

Grazie.

Ci sarà comunque una documentazione che copre l’intera API dei Blocchi, inclusa l’implementazione nel core e nei plugin. Per la personalizzazione con i Blocchi, il file SKILL.md dovrebbe già toccare tutti gli aspetti rilevanti. È compatto e molto leggibile.

Il tema di esempio include sia i file di inizializzazione che i blocchi. I file di inizializzazione dichiarano il layout per BlockOutlet: discourse-theme-skills/javascripts/discourse/api-initializers at main · discourse/discourse-theme-skills · GitHub.

Mi sto divertendo davvero un sacco con questo :winking_face_with_tongue: … Come gli altri strumenti di progettazione basati sull’IA, è molto performante per prototipare rapidamente idee che sarebbero state troppo costose da schizzare a mano.

Ho chiesto una homepage editoriale in stile brutalista, con contenuti altamente insoliti proposti dalla community. Ho ottenuto questo layout, che in effetti presenta alcune idee davvero interessanti per i blocchi in evidenza. Il più divertente è che ha battezzato il tema Newspaper from Hell :grinning_face_with_smiling_eyes:

Poi ho chiesto qualcosa che ho sempre voluto esplorare: una homepage portale in stile giapponese con blocchi densi, colori pastello e tante piccole animazioni… Adoro questo primo risultato:

In realtà servirebbe uno screencast, perché tutte quelle piccole animazioni lo rendono molto più gradevole:

flushy

Finalmente!!! Lo proverò al più presto per aggiornare i miei componenti di tema sperimentali :smiley:

Elmo circondato da fuoco intenso

Questo è un ottimo lavoro e molto creativo. Se facciamo un fork e costruiamo su questo tema, ci sono considerazioni da fare sul fatto che il tema padre potrebbe non rimanere aggiornato con Discourse nel tempo? Sto cercando di capire come approcciare la questione.

Grazie per le risorse!

Grazie @BrianC!

Per quanto riguarda il mantenimento dell’aggiornamento del tema principale: il percorso di competenze segue l’evoluzione delle API del tema e dei blocchi di Discourse, quindi finché li utilizziamo attivamente, rimarranno sincronizzati man mano che le API evolvono. Il tema di esempio è più un’istantanea per dimostrare i modelli. Se lo forki, il tuo fork è di tua proprietà. Tuttavia, puoi fare riferimento alle competenze o ai nuovi esempi quando aggiorni il tuo tema.

Un obiettivo centrale per la stessa API dei blocchi è una superficie stabile e ridotta, che aiuta a mantenere le personalizzazioni resilienti agli aggiornamenti di Discourse. Quindi, se aggiungi principalmente blocchi personalizzati (come fa il tema di esempio), dovresti già operare in un ambiente stabile. La cosa principale da monitorare sarebbero le modifiche ai nomi degli outlet o alle firme delle API dei blocchi. Al momento, l’API è ancora considerata sperimentale, quindi potrebbero esserci cambiamenti nei nomi, ecc.

Riassumerei l’approccio consigliato in questo modo: forkare liberamente il tema e fare affidamento sulla documentazione delle competenze come riferimento vivente su come le cose dovrebbero essere fatte in futuro.