| name | modelio-doc |
|---|---|
| description | Génère des documents professionnels Word (.docx) à partir d'un modèle Modelio via le protocole MCP. Invoque ce skill quand l'utilisateur demande de générer, produire ou créer un document, un rapport ou une spécification depuis un modèle Modelio. |
| applyTo | ** |
L'utilisateur te demande de :
- Générer un document (exigences, classes, cas d'utilisation, conception, objectifs, risques, règles métier)
- Produire un rapport à partir d'un modèle Modelio
- Créer une spécification depuis Modelio
| Type | Fichier de consignes | Description |
|---|---|---|
| Requirements | doc-types/requirements.md |
Cahier des exigences |
| ClassReference | doc-types/class-reference.md |
Référence des classes UML |
| UseCases | doc-types/use-cases.md |
Cas d'utilisation |
| AnalysisAndDesign | doc-types/analysis-and-design.md |
Analyse et conception |
| Goals | doc-types/goals.md |
Objectifs |
| Risks | doc-types/risks.md |
Risques |
| BusinessRules | doc-types/business-rules.md |
Règles métier |
Quand l'utilisateur demande un document :
- Identifie le type — Détermine quel doc-type correspond à la demande
- Lis les consignes — Ouvre et lis intégralement le fichier
doc-types/{type}.mdcorrespondant - Extrais les données — Appelle les resources et tools MCP Modelio indiqués dans les consignes
- Génère le script python-docx — Écris un script Python complet qui utilise
python-docxpour assembler le document Word avec les styles Modelio exacts - Exécute le script — Lance le script pour produire le fichier
.docx - Confirme — Indique à l'utilisateur le chemin du document généré
- Ne jamais inventer de données — N'utilise que les données extraites via MCP. Si un champ est vide, laisse-le vide.
- Respecter la structure exacte — Chaque doc-type décrit précisément l'ordre des sections, les tableaux, les colonnes. Suis-les à la lettre.
- Respecter les styles Modelio — Couleurs, polices, tailles sont documentées dans chaque skill. Le document doit être visuellement identique au Document Publisher de Modelio.
- Le template .docx est la source de styles — Charge toujours le template depuis
examples/comme base du document pour hériter des styles Word. - Captions après les tableaux — Les légendes de tableaux sont toujours placées APRÈS le tableau, jamais avant.
- Numérotation globale — Les tableaux sont numérotés séquentiellement (Table 1, Table 2...) sur tout le document.
| Style | Police | Taille | Gras | Italique | Couleur |
|---|---|---|---|---|---|
| Heading 1 | Calibri | 18pt | Oui | #4F81BD |
|
| Heading 2 | Calibri | 13pt | Oui | #4F81BD |
|
| Caption | Calibri | 10pt | Oui | Oui | #4F81BD |
| Subtitle | Calibri | 12pt | Oui | #4F81BD |
|
| TOC Heading | Calibri | 14pt | #365F91 |
||
| Normal / Texte | Calibri | 11pt | Noir | ||
| No Spacing | Calibri | 11pt | Noir |
Toutes les lignes d'en-tête de tableau utilisent :
- Fond bleu
#4F81BD - Texte blanc, gras, Calibri 10pt, centré
from docx.oxml import OxmlElement
from docx.oxml.ns import qn
def style_header_row(row, bg_color="4F81BD"):
for cell in row.cells:
shading = OxmlElement("w:shd")
shading.set(qn("w:fill"), bg_color)
shading.set(qn("w:val"), "clear")
cell._tc.get_or_add_tcPr().append(shading)
for paragraph in cell.paragraphs:
paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in paragraph.runs:
run.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)
run.font.bold = True
run.font.size = Pt(10)
run.font.name = "Calibri"Tous les documents (sauf ClassReference) commencent par cet en-tête commun :
- Table des matières — style "TOC Heading", suivi du texte : « Merci de sélectionner ce champ et d'appuyer sur F9 pour créer/mettre à jour la table des matières »
- Tableau de révision — 1 ligne d'en-tête uniquement : [Rev | Date | Auteur | Description], avec le style en-tête bleu
- Table des figures — style "TOC Heading" + texte placeholder F9
- Table des tables — style "TOC Heading" + texte placeholder F9
from pathlib import Path
from docx import Document
template_path = Path("ModelioDocSkill/examples/Requirements - Exigences.docx")
if template_path.exists():
doc = Document(str(template_path))
# Vider le contenu existant tout en gardant les styles
for _ in range(len(doc.paragraphs)):
p = doc.paragraphs[0]
p._element.getparent().remove(p._element)
for table in doc.tables:
table._element.getparent().remove(table._element)
else:
doc = Document()Le script généré doit utiliser uniquement python-docx :
from docx import Document
from docx.shared import Pt, RGBColor, Cm
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml import OxmlElement
from docx.oxml.ns import qnModelioDocSkill/examples/ ← Templates .docx (source de styles)
ModelioDocSkill/output/ ← Documents générés