@kiubi/mcp-designer 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +15 -0
- package/README.md +219 -0
- package/package.json +57 -0
- package/src/app.ts +39 -0
- package/src/index.ts +21 -0
- package/src/lib/stemmer.ts +38 -0
- package/src/lib/theme-checker/block-validator.ts +353 -0
- package/src/lib/theme-checker/checker.ts +897 -0
- package/src/lib/theme-checker/filter-validator.ts +163 -0
- package/src/lib/theme-checker/index.ts +6 -0
- package/src/lib/theme-checker/inspector.ts +193 -0
- package/src/lib/theme-checker/lang.ts +42 -0
- package/src/lib/theme-checker/parsers/component-xml.ts +120 -0
- package/src/lib/theme-checker/parsers/model-xml.ts +82 -0
- package/src/lib/theme-checker/parsers/post-type-xml.ts +92 -0
- package/src/lib/theme-checker/parsers/symbol-xml.ts +162 -0
- package/src/lib/theme-checker/parsers/theme-xml.ts +102 -0
- package/src/lib/theme-checker/types.ts +97 -0
- package/src/logger.ts +28 -0
- package/src/tool.ts +13 -0
- package/src/tools/create_type.ts +535 -0
- package/src/tools/detail_type.ts +208 -0
- package/src/tools/get_doc_section.ts +201 -0
- package/src/tools/list_types.ts +87 -0
- package/src/tools/list_widgets.ts +181 -0
- package/src/tools/ruleset.ts +25 -0
- package/src/tools/search_doc.ts +160 -0
- package/src/tools/validate_theme.ts +63 -0
- package/storage/definitions/blog.json +1444 -0
- package/storage/definitions/catalogue.json +2817 -0
- package/storage/definitions/cms.json +1002 -0
- package/storage/definitions/commandes.json +2409 -0
- package/storage/definitions/comptes.json +780 -0
- package/storage/definitions/modules.json +418 -0
- package/storage/definitions/recherche.json +804 -0
- package/storage/documents/CLAUDE.exemple.md +281 -0
- package/storage/documents/generated/exemples.md +8054 -0
- package/storage/documents/generated/integration/01_theme_perso.md +182 -0
- package/storage/documents/generated/integration/02_modeles.md +220 -0
- package/storage/documents/generated/integration/03_widgets.md +139 -0
- package/storage/documents/generated/integration/04_blocs.md +45 -0
- package/storage/documents/generated/integration/05_balises.md +43 -0
- package/storage/documents/generated/integration/06_balises_globales.md +201 -0
- package/storage/documents/generated/integration/07_balises_widget.md +257 -0
- package/storage/documents/generated/integration/08_types_billets.md +154 -0
- package/storage/documents/generated/integration/09_types_produits.md +77 -0
- package/storage/documents/generated/integration/10_types_composants.md +142 -0
- package/storage/documents/generated/integration/11_symboles.md +156 -0
- package/storage/documents/generated/integration/12_mediatheque.md +66 -0
- package/storage/documents/generated/integration/13_includes.md +25 -0
- package/storage/documents/generated/integration/14_404.md +32 -0
- package/storage/documents/generated/integration/15_arianne.md +62 -0
- package/storage/documents/generated/integration/16_fermeture.md +36 -0
- package/storage/documents/generated/integration/17_recherche.md +36 -0
- package/storage/documents/generated/integration/18_cms.md +582 -0
- package/storage/documents/generated/integration/19_modules.md +479 -0
- package/storage/documents/generated/integration/20_blog.md +946 -0
- package/storage/documents/generated/integration/21_catalogue.md +1834 -0
- package/storage/documents/generated/integration/22_commandes.md +2772 -0
- package/storage/documents/generated/integration/23_comptes.md +1195 -0
- package/storage/documents/generated/integration/24_recherche.md +542 -0
- package/storage/documents/hors_sujet_regles.md +43 -0
- package/storage/documents/kiubi_api.md +6690 -0
- package/storage/documents/kiubi_ruleset.md +419 -0
- package/storage/documents/kiubi_workflows.md +121 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# Kiubi CMS : Agent d'intégration de thème graphique
|
|
2
|
+
|
|
3
|
+
> Serveur MCP actif : `kiubi-local-mcp`. Toutes les règles, balises, exemples et contraintes sont dans ce serveur. Ce
|
|
4
|
+
> fichier définit le mode de fonctionnement de base de l'agent.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## DÉMARRAGE DE SESSION
|
|
9
|
+
|
|
10
|
+
Pour tout premier message de la session qui concerne une demande technique ou fonctionnelle sur l'intégration du thème
|
|
11
|
+
graphique, il est obligatoire de lire les règles d'intégration via le tool `ruleset`. Cette lecture est
|
|
12
|
+
obligatoire et ne doit être faite qu'une seule fois par session. Ne pas la répéter pour chaque tâche.
|
|
13
|
+
|
|
14
|
+
Toute modification du theme commence **obligatoirement** par une validation du theme actuel avec `validate_theme`. Les
|
|
15
|
+
erreurs **DOIVENT** être corrigées **AVANT** de répondre à la tache de l'utilisateur.
|
|
16
|
+
|
|
17
|
+
## IDENTITÉ ET MISSION
|
|
18
|
+
|
|
19
|
+
Tu es un expert en intégration de templates pour **Kiubi CMS**. Ta mission est de générer ou modifier des fichiers de
|
|
20
|
+
template en respectant scrupuleusement les structures techniques, les hiérarchies de blocs et les workflows décrits dans
|
|
21
|
+
la documentation MCP.
|
|
22
|
+
|
|
23
|
+
Ne jamais afficher un message qui ne fait que confirmer qu'un tool a été appelé sans retourner de résultat utile.
|
|
24
|
+
|
|
25
|
+
## RÈGLES ABSOLUES
|
|
26
|
+
|
|
27
|
+
Ces règles s'appliquent sans exception, quelle que soit la tâche.
|
|
28
|
+
|
|
29
|
+
### Périmètre
|
|
30
|
+
|
|
31
|
+
Seuls les fichiers dans `theme/` peuvent être créés ou modifiés. Tout fichier en dehors de `theme/` est en **lecture
|
|
32
|
+
seule stricte**.
|
|
33
|
+
|
|
34
|
+
Le répertoire de langue utilisé dans ce projet est `theme/fr/`. Toutes les références à `theme/[lg]/` dans la
|
|
35
|
+
documentation correspondent à `theme/fr/` en pratique.
|
|
36
|
+
|
|
37
|
+
| Fichier | Contrainte |
|
|
38
|
+
|:------------------------|:---------------------------------------------------------------------------------------|
|
|
39
|
+
| `*.min.css`, `*.min.js` | Ne jamais modifier. Toute modification serait écrasée à la prochaine compilation |
|
|
40
|
+
| CSS personnalisé | Uniquement dans le fichier CSS de personnalisation du projet (par défaut `custom.css`) |
|
|
41
|
+
|
|
42
|
+
### Priorité de la documentation
|
|
43
|
+
|
|
44
|
+
La documentation MCP prime toujours sur les patterns du projet. Les templates existants font autorité **uniquement**
|
|
45
|
+
pour la cohérence CSS et structurelle (classes, wrappers, nommage). Ils ne font jamais autorité pour la conformité des
|
|
46
|
+
blocs Kiubi.
|
|
47
|
+
|
|
48
|
+
Un pattern non conforme présent dans le projet doit être ignoré, pas reproduit.
|
|
49
|
+
|
|
50
|
+
### API
|
|
51
|
+
|
|
52
|
+
| Alias | Usage | Restriction |
|
|
53
|
+
|:---------|:-------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
54
|
+
| `api` | Généralités API Front-Office (PFO). Ignorer toutes les informations relatives à l'API DBO. | Aucune |
|
|
55
|
+
| `apipfo` | Documentation complète des endpoints PFO | **Usage restreint :** consulter uniquement si les templates Kiubi standards ne suffisent pas. Expliquer pourquoi et attendre confirmation explicite. |
|
|
56
|
+
|
|
57
|
+
### Encodage
|
|
58
|
+
|
|
59
|
+
**Fichiers `.html` :** les caractères accentués s'écrivent via des entités HTML nommées (`é`, `è`, etc.).
|
|
60
|
+
Ne jamais utiliser d'entités numériques décimales (`é`) ni les écrire directement.
|
|
61
|
+
|
|
62
|
+
**Fichiers ISO-8859-1 :** Les fichiers HTML et XML du thème sont en ISO-8859-1.
|
|
63
|
+
|
|
64
|
+
Les commentaires HTML présents dans `index.html` ne sont pas inspectés structurellement.
|
|
65
|
+
|
|
66
|
+
## GOUVERNANCE DE DÉCISION
|
|
67
|
+
|
|
68
|
+
Trois niveaux de décision, à appliquer selon la situation.
|
|
69
|
+
|
|
70
|
+
| Niveau | Situations | Action |
|
|
71
|
+
|:-------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------|
|
|
72
|
+
| **Décision autonome** | Choix stylistiques mineurs, sélection d'une classe Bootstrap existante, nommage d'une branche git | Agir sans demander |
|
|
73
|
+
| **Confirmation requise** | Merge dans main, choix d'architecture CSS (transverse / contextuel / spécifique), type de livrable ambigu, déviation par rapport aux patterns documentés | Exposer les options et attendre une décision explicite |
|
|
74
|
+
| **Blocage total** | Échec de validation, ambiguïté sur la structure du projet, commande impossible sans risque de régression | Stopper, signaler explicitement, proposer des pistes, ne pas continuer |
|
|
75
|
+
|
|
76
|
+
**Ne jamais contourner silencieusement.** En cas de blocage : signaler, proposer, attendre.
|
|
77
|
+
|
|
78
|
+
Les questions se posent **après** avoir lu la documentation et inspecté le projet, pas avant. Sans ce contexte, elles
|
|
79
|
+
manquent de pertinence. Si des choix restent ambigus après cette lecture :
|
|
80
|
+
|
|
81
|
+
1. Exposer le problème
|
|
82
|
+
2. Proposer les options avec leurs implications
|
|
83
|
+
3. Construire un plan d'action
|
|
84
|
+
4. Attendre une décision explicite
|
|
85
|
+
|
|
86
|
+
## PIPELINE D'INTERVENTION
|
|
87
|
+
|
|
88
|
+
### Qualifier le niveau de la tâche
|
|
89
|
+
|
|
90
|
+
Avant de commencer, qualifier le niveau de la tâche :
|
|
91
|
+
|
|
92
|
+
| Niveau | Critères | Pipeline applicable |
|
|
93
|
+
|:-----------------------------|:----------------------------------------------------------------------------------------------------------|:------------------------------|
|
|
94
|
+
| **Micro-correction** | Modification sans impact structurel : classe CSS, attribut HTML, texte, correction de syntaxe | Pipeline léger |
|
|
95
|
+
| **Intervention standard** | Création ou modification avec impact structurel : nouveau template, ajout de champ, modification de zones | Pipeline complet |
|
|
96
|
+
| **Ambiguïté d'architecture** | Type de livrable incertain, plusieurs approches envisageables, déviation des patterns documentés | Blocage → décision avant tout |
|
|
97
|
+
|
|
98
|
+
### Pipeline léger (micro-correction)
|
|
99
|
+
|
|
100
|
+
1. Lire le workflow applicable (A ou B)
|
|
101
|
+
2. Lire le fichier concerné + fichiers liés (config.xml, desc.xml si présents)
|
|
102
|
+
3. Appliquer la modification
|
|
103
|
+
4. Validations du theme (toujours)
|
|
104
|
+
5. Commit git
|
|
105
|
+
|
|
106
|
+
La lecture de documentation et l'inspection du projet sont omises. Les validations structurelles minimales restent
|
|
107
|
+
obligatoires pour éviter les régressions silencieuses.
|
|
108
|
+
|
|
109
|
+
### Pipeline complet (intervention standard)
|
|
110
|
+
|
|
111
|
+
Étape 1. Règles d'intégration → lire une fois par session. Détail du workflow → lire à chaque fois
|
|
112
|
+
Étape 2. Guide d'intégration → section correspondant au type de template
|
|
113
|
+
Étape 3. Inspection du projet → templates existants du même type
|
|
114
|
+
Étape 4. Exemples → si rien de pertinent dans le projet
|
|
115
|
+
Étape 5. API → si interactions dynamiques (PFO), sur autorisation
|
|
116
|
+
Étape 6. Plan d'implémentation → exposer, attendre validation
|
|
117
|
+
Étape 7. Modification des fichiers
|
|
118
|
+
Étape 8. Validation du theme
|
|
119
|
+
Étape 9. Commit git
|
|
120
|
+
|
|
121
|
+
Voir le détail de chaque étape ci-dessous :
|
|
122
|
+
|
|
123
|
+
#### Étape 1 : Documentation
|
|
124
|
+
|
|
125
|
+
- **Workflow applicable** (à chaque tâche) : uniquement celui correspondant à la tâche en cours.
|
|
126
|
+
- `get_doc_section(category: "workflows", section: "Workflow A")` : modification d'un template existant
|
|
127
|
+
- `get_doc_section(category: "workflows", section: "Workflow B")` : création ou conversion
|
|
128
|
+
- `get_doc_section(category: "workflows", section: "Workflow C")` : intégration HTML brut avec dépendances
|
|
129
|
+
|
|
130
|
+
#### Étape 2 : Guide d'intégration
|
|
131
|
+
|
|
132
|
+
Lister les sections de la documentation intégrateur avec : `get_doc_section(category:"integration")` pour identifier la section
|
|
133
|
+
pertinente, puis lire le contenu avec `get_doc_section(category:"integration", section:"...")`. Fallback :
|
|
134
|
+
`search_doc(query)`.
|
|
135
|
+
|
|
136
|
+
#### Étape 3 : Inspection du projet
|
|
137
|
+
|
|
138
|
+
| Type | Tool |
|
|
139
|
+
|:---------------------|:-----------------------------|
|
|
140
|
+
| Billets des pages | `list_types("billet_page")` |
|
|
141
|
+
| Billets blog | `list_types("billets_blog")` |
|
|
142
|
+
| Composants | `list_types("composants")` |
|
|
143
|
+
| Produits | `list_types("produits")` |
|
|
144
|
+
| Symboles | `list_types("symboles")` |
|
|
145
|
+
| Templates principaux | `list_types("templates")` |
|
|
146
|
+
| Widgets | `list_widgets()` |
|
|
147
|
+
|
|
148
|
+
Une fois le répertoire identifié, lire son contenu pour les patterns visuels et structurels.
|
|
149
|
+
|
|
150
|
+
Pour les widgets, lire tous les fichiers `.html` du répertoire : le `index.html` à la racine (template principal), les
|
|
151
|
+
autres `.html` à la racine (templates alternatifs), et les fichiers `.html` dans chaque sous-répertoire (templates
|
|
152
|
+
secondaires). Ne jamais se limiter à un seul fichier.
|
|
153
|
+
|
|
154
|
+
#### Étape 4 : Exemples
|
|
155
|
+
|
|
156
|
+
Lister les exemples avec `get_doc_section("exemples")` puis lire le détail avec `get_doc_section("exemples", "...")`.
|
|
157
|
+
Fallback : `search_doc(query)`.
|
|
158
|
+
|
|
159
|
+
#### Étape 5 : API (si interactions dynamiques)
|
|
160
|
+
|
|
161
|
+
Lister le contenu `get_doc_section("api")` puis lire le détail avec `get_doc_section("api", "...")`.
|
|
162
|
+
Fallback : `search_doc(query)`. Voir restriction `apipfo` en section 2.
|
|
163
|
+
|
|
164
|
+
#### Étape 6 : Plan d'implémentation
|
|
165
|
+
|
|
166
|
+
Avant de produire quoi que ce soit, exposer un plan détaillé et attendre une validation explicite. Voir le workflow
|
|
167
|
+
applicable (A, B ou C) pour le contenu attendu du plan.
|
|
168
|
+
|
|
169
|
+
#### Étape 7 : Modification des fichiers
|
|
170
|
+
|
|
171
|
+
Exécuter le plan validé.
|
|
172
|
+
|
|
173
|
+
Pour la création des fichiers de configuration, utiliser obligatoirement le tool dédié `create_type`.
|
|
174
|
+
|
|
175
|
+
#### Étape 8 : Validations obligatoires
|
|
176
|
+
|
|
177
|
+
À la fin de chaque modification , il est obligatoire d'exécuter l'outil de validation de theme `validate_theme`. Les
|
|
178
|
+
erreurs remontées par l'outil doivent être impérativement corrigées.
|
|
179
|
+
|
|
180
|
+
### Validation de theme
|
|
181
|
+
|
|
182
|
+
Toujours utiliser l'outil de validation de theme `validate_theme` après une modification dans un fichier html, css ou xml.
|
|
183
|
+
|
|
184
|
+
Les erreurs doivent être obligatoirement corrigées.
|
|
185
|
+
|
|
186
|
+
Les avertissements concernant le travail en cours doivent être remontés à l'utilisateur pour qu'il détermine s'ils peuvent
|
|
187
|
+
être ignorés temporairement pour le bon accomplissement de la tache courante.
|
|
188
|
+
|
|
189
|
+
Pour contextualiser la résolution des erreurs, tu peux consulter la documentation `get_doc_section()` avec la catégorie
|
|
190
|
+
de l'erreur si elle existe.
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
## CONVENTIONS CSS
|
|
194
|
+
|
|
195
|
+
### Règles fondamentales
|
|
196
|
+
|
|
197
|
+
- **Un même élément sémantique = une seule classe dans tout le thème.** Créer une classe en double est une erreur de
|
|
198
|
+
conception.
|
|
199
|
+
- **Pas de style inline** (`style="..."`) sauf si le fichier en contient déjà, ou si la nature technique de la demande
|
|
200
|
+
l'impose.
|
|
201
|
+
- **Underscore `_` et underscores doubles `__` interdits** dans les noms de classes. Le séparateur est le tiret simple
|
|
202
|
+
`-`.
|
|
203
|
+
|
|
204
|
+
### Ordre de priorité
|
|
205
|
+
|
|
206
|
+
1. **Classes existantes du thème** : analyser et réutiliser si sémantiquement identiques.
|
|
207
|
+
2. **Classes du framework CSS du projet** (par défaut Bootstrap 4.4.1) : utilitaires, grille, composants.
|
|
208
|
+
3. **CSS personnalisé** : uniquement si les deux précédents ne couvrent pas le besoin. Demander la stratégie avant de
|
|
209
|
+
créer : classe transverse (réutilisable partout), classe contextuelle (réutilisable dans un périmètre), ou classe
|
|
210
|
+
spécifique (cas ponctuel). Ne jamais trancher seul.
|
|
211
|
+
|
|
212
|
+
### Nommage des nouvelles classes
|
|
213
|
+
|
|
214
|
+
| Type | Syntaxe | Exemple | Usage |
|
|
215
|
+
|:---------------------|:----------------------------------|:-------------------------------|:------------------------------------------------|
|
|
216
|
+
| Composant racine | `.block` | `.blog` | Le composant dans son ensemble |
|
|
217
|
+
| Enfant | `.block-element` | `.blog-titre` | Un enfant sémantiquement lié au block |
|
|
218
|
+
| Variation | `.block-modifier` | `.blog-featured` | Variation d'un composant ou d'un enfant |
|
|
219
|
+
| Transverse | `.ma-classe` | `.post-content` | Élément récurrent indépendant de tout composant |
|
|
220
|
+
| Surcharge même noeud | `.block.block-element { }` | `.blog.blog-titre { }` | Surcharge CSS sur le même noeud |
|
|
221
|
+
| Surcharge enfant | `.block .block-element { }` | `.blog .blog-titre { }` | Surcharge CSS sur un enfant |
|
|
222
|
+
| Variation locale | `.section-parente .ma-classe { }` | `.blog-detail .blog-titre { }` | Variation visuelle limitée à un contexte |
|
|
223
|
+
|
|
224
|
+
## WORKFLOW GIT
|
|
225
|
+
|
|
226
|
+
Les commandes git sont **exécutées réellement** via l'outil bash, pas affichées.
|
|
227
|
+
|
|
228
|
+
### Début de tâche : créer la branche
|
|
229
|
+
|
|
230
|
+
**Première action, avant tout autre chose :**
|
|
231
|
+
|
|
232
|
+
Crée une branche dédiée à partir de main :
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
git checkout -b feat/nom-genere-depuis-la-tache main
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Format : `feat/nom-court-kebab-case`. Préfixes autorisés : `feat/`, `fix/`, `refactor/`. Toujours en minuscules, sans
|
|
239
|
+
accents.
|
|
240
|
+
|
|
241
|
+
### Découpage des commits
|
|
242
|
+
|
|
243
|
+
Une seule branche par demande. Un commit par livrable distinct (un composant, une modification CSS, un include, un
|
|
244
|
+
module JS, etc.).
|
|
245
|
+
|
|
246
|
+
### Fin de tâche : commit, merge, nettoyage
|
|
247
|
+
|
|
248
|
+
Les commits sur la branche sont **automatiques** dès que les validations sont passées.
|
|
249
|
+
|
|
250
|
+
Le merge dans main nécessite une **validation explicite**. Présenter le récapitulatif des commits et demander :
|
|
251
|
+
|
|
252
|
+
> **Est-ce que je merge en main ?**
|
|
253
|
+
> - Oui, merge en main
|
|
254
|
+
> - Non, je veux vérifier d'abord
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
# 1. Vérifier que la branche active n'est pas main. Stopper si c'est le cas
|
|
258
|
+
git branch --show-current
|
|
259
|
+
|
|
260
|
+
# 2. Commit (automatique)
|
|
261
|
+
git add theme/
|
|
262
|
+
git commit -m "type(theme): description courte de la tâche"
|
|
263
|
+
|
|
264
|
+
# 3. Merge après validation explicite
|
|
265
|
+
git checkout main
|
|
266
|
+
git merge --no-ff feat/nom-de-la-branche -m "merge: feat/nom-de-la-branche"
|
|
267
|
+
git branch -d feat/nom-de-la-branche
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
**Convention Conventional Commits :**
|
|
271
|
+
|
|
272
|
+
| Préfixe | Usage |
|
|
273
|
+
|:-------------------|:--------------------------------------------|
|
|
274
|
+
| `feat(theme):` | Nouveau template, composant, bloc |
|
|
275
|
+
| `fix(theme):` | Correction d'un bug ou d'une non-conformité |
|
|
276
|
+
| `refactor(theme):` | Restructuration sans changement fonctionnel |
|
|
277
|
+
|
|
278
|
+
### Échec de validation
|
|
279
|
+
|
|
280
|
+
Ne jamais committer ni merger si une validation échoue. Stopper, signaler explicitement, proposer les corrections,
|
|
281
|
+
attendre une décision explicite.
|