Migrer un plug-in Glyphs 3 vers Glyphs 4
Créez une copie migrée et révisable d'un plug-in Python. Considérez la migration statique comme une préparation en vue d'un test de lancement manuel dans Glyphs 4, et non comme une preuve de compatibilité runtime.
Garde-fous
- Préservez le plug-in ou le dépôt d'origine.
- Ne migrez jamais sur place. Refusez un chemin de sortie existant.
- N'installez, n'exécutez, ne rechargez, ne redémarrez jamais Glyphs, et ne modifiez jamais un dossier Plugins actif, sauf si l'utilisateur le demande explicitement.
- Utilisez les outils
docs_searchetdocs_getde Glyphs MCP comme base de connaissances de développement principale. Les espaces de noms des outils varient selon le client ; résolvez-les par leurs noms d'outils finaux et leurs descriptions. - Récupérez les directives officielles ciblées avant de modifier les API GlyphsApp, les méthodes de cycle de vie des plug-ins, les sélecteurs, les callbacks, les métadonnées de bundle ou la gestion des formes.
- N'appelez pas
docs_enable_page_resourcespour un travail normal. Récupérez les pages à la demande. - Préférez la branche actuelle
Glyphs4deschriftgestalt/GlyphsSDK; ne supposez pas qu'un modèle Glyphs 3 ou un chargeur en cache est à jour. - Séparez les changements comportementaux des changements de migration mécanique.
Flux de travail de la base de connaissances Glyphs MCP
Lisez references/glyphs-mcp-development-kb.md avant d'examiner les résultats spécifiques à l'API.
- Confirmez que
docs_searchetdocs_getsont disponibles depuis le serveur Glyphs MCP. - Établissez une base de référence documentaire avant toute édition :
- Recherchez
pluginset récupérez le résultat du manuel officiel des plug-ins. - Recherchez
Info.plistet récupérez l'aperçu du modèle de plug-in Python et le modèle plist. - Recherchez la classe de base exacte, par exemple
GeneralPlugin,ReporterPlugin,FilterWithoutDialog,PalettePlugin,SelectToolouFileFormatPlugin; récupérez son guide, son modèle source et la section API du plug-in correspondante.
- Recherchez
- Recherchez chaque classe, propriété, callback ou sélecteur non familier séparément. Préférez les symboles exacts courts comme
GSLayer,shapesouaddCallback. - Récupérez les résultats via le
doc_idoupathrenvoyé. Sitruncatedest vrai, continuez à partir denextOffsetjusqu'à ce que la section pertinente soit complète. - Enregistrez le titre,
docId,sourceKind,sourceUrlde chaque page récupérée, ainsi que la décision de migration qu'elle soutient. Incluez ces preuves dans la transmission. - Si les outils ne sont pas disponibles, signalez que la révision de la documentation Glyphs MCP est bloquée. Un audit statique peut continuer, mais ne présentez pas de modifications d'API ou de cycle de vie non vérifiées comme étant prêtes pour la migration.
Flux de travail
-
Résolvez le plug-in ou le dépôt source, la cible de compatibilité prévue (
Glyphs 4 uniquementouGlyphs 3 et 4), et un nouveau chemin de sortie. -
Connectez-vous à la base de connaissances de développement Glyphs MCP et récupérez les pages de base pour la famille de plug-ins détectée.
-
Obtenez ou localisez une copie à jour de la branche officielle
Glyphs4de GlyphsSDK. -
Auditez avant de copier :
python3 scripts/migrate_plugin.py "/chemin/vers/source" \ --sdk "/chemin/vers/GlyphsSDK" -
Lisez references/migration-review.md. Pour chaque résultat spécifique à l'API, recherchez dans la documentation Glyphs fournie cette classe, propriété, callback, sélecteur ou type de plug-in et récupérez uniquement les pages pertinentes.
-
Créez la copie migrée et appliquez des correctifs de framework d'import conservateurs :
python3 scripts/migrate_plugin.py "/chemin/vers/source" \ --output "/chemin/vers/nouvelle-copie-glyphs4" \ --sdk "/chemin/vers/GlyphsSDK" \ --apply-safe-fixes -
Utilisez les réécritures optionnelles uniquement après avoir examiné leur impact :
- Ajoutez
--rewrite-wildcard-importspour remplacer les instructionsfrom GlyphsApp import *simples en utilisant les symboles trouvés dans le fichier.pyide Glyphs 4. - Ajoutez
--replace-loaderpour copier le modèleContents/MacOS/plugindu SDK dans chaque bundle. - Ajoutez
--align-glyphs4-plistpour supprimer les clés de flux de mise à jour héritées absentes des modèles Glyphs 4 actuels. Confirmez d'abord que le plug-in ne dépend pas de son propre flux de mise à jour.
- Ajoutez
-
Examinez le rapport de migration généré et la diff complète du code source. Corrigez manuellement les problèmes de cycle de vie, d'API, de dépendances, d'interface utilisateur ou de formes mixtes. Liez chaque modification spécifique à l'API à une page de la base de connaissances récupérée.
-
Validez chaque bundle :
- Analysez tous les fichiers Python avec la version Python prévue de Glyphs.
- Exécutez
plutil -lintsur chaqueContents/Info.plist. - Confirmez que
NSPrincipalClass,PyMainFileNameset la classe Python principale sont cohérents. - Comparez la structure du bundle avec le modèle SDK Glyphs 4 actuel correspondant.
- Recompilez les fichiers
.xiblorsque leur interface a changé.
-
Transmettez un plan de test manuel. Testez une copie jetable dans Glyphs 4, exercez chaque entrée de menu et callback, inspectez la sortie du Macro Panel et de la Console, et testez les chemins d'annulation, d'exportation, de dessin et de dépendances pertinents pour le plug-in.
Décision de compatibilité
- Pour
Glyphs 4 uniquement, autorisez les API et la syntaxe Python supportées par le runtime Glyphs 4 après les avoir confirmées dans les stubs actuels. - Pour
Glyphs 3 et 4, conservez un chemin de code partagé lorsque c'est pratique, séparez les vraies différences d'API avec des vérifications de capacité, et testez les deux applications. N'ajoutez pas de syntaxe propre à Glyphs 4 uniquement à des fins d'annotations. - Si le plug-in reconstruit
layer.paths,layer.componentsoulayer.shapes, inspectez s'il doit préserver l'ordre des formes mixtes ou des types de formes plus récents. Ne déduisez jamais qu'une réécriture uniquement basée sur les chemins est sans perte.
Livrables
Retournez la nouvelle copie, le rapport de migration, la cible de compatibilité, les résultats de validation statique et les tests Glyphs 4 manuels restants. Incluez un tableau de preuves documentaires avec le titre de chaque page, le docId Glyphs MCP, le sourceUrl officiel et la décision qu'elle soutient. Indiquez clairement qu'aucune installation en direct ou test runtime n'a eu lieu, sauf si cela a réellement été le cas.
Ressources
scripts/migrate_plugin.py: assistant d'audit et de copie non destructive.references/migration-review.md: liste de contrôle de révision basée sur les preuves et points d'escalade.references/glyphs-mcp-development-kb.md: protocole exact de recherche MCP, pagination, preuves et récupération..mcp.json: connexion du plug-in Claude Code au serveur Glyphs MCP local.mcp.json: connexion du plug-in Cursor au serveur Glyphs MCP local..claude-plugin/plugin.json: métadonnées de la communauté/plugin Claude Code ; chargez ce dossier avecclaude --plugin-dir..cursor-plugin/plugin.json: métadonnées du plugin Cursor qui enregistrent leSKILL.mdracine etmcp.json.agents/openai.yaml: métadonnées d'affichage Codex et dépendance Glyphs MCP.