Communitygithub.com

thierryc/glyphs3-to-glyphs4-skill

用於將 Glyphs 3 Python 外掛遷移至 Glyphs 4 的代理技能,並整合 Glyphs MCP 文件。

glyphs3-to-glyphs4-skill 是什麼?

此技能為 AI 代理(如 Claude Code、Cursor 或 Codex)提供一個結構化流程,將從 Glyphs 3 的 Python 外掛遷移至 Glyphs 4。其核心功能是自動化機械性的轉換步驟,同時嚴格保留原始外掛檔案,並強制要求開發者在最終手動測試之前進行人為審查。技能強制使用 Glyphs MCP(模型上下文協定)文件伺服器,以確保所有 API 變更均基於最新的官方文件,而非假設或過時的範本。它包含了詳盡的檢查清單與防護措施,以防止意外執行、原地修改或未經驗證的 API 使用。該技能支援 Glyphs 4 專屬或雙版本(Glyphs 3 與 4)相容性目標,並輸出遷移副本、詳細報告、靜態驗證結果以及一份針對 Glyphs 4 的結構化手動測試計畫。

相容平台✓Claude Code✓Codex CLI✓Cursor
npx skills add thierryc/glyphs3-to-glyphs4-skill

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

將 Glyphs 3 外掛遷移至 Glyphs 4

建立一份可審查的 Python 外掛遷移副本。將靜態遷移視為在 Glyphs 4 中進行手動啟動測試的準備工作,而非執行時期相容性的證明。

防護措施

  • 保留原始外掛或儲存庫。
  • 絕不原地遷移。拒絕現有的輸出路徑。
  • 除非使用者另行要求,否則絕不安裝、執行、重新載入、重新啟動 Glyphs,或變更現用的 Plugins 資料夾。
  • 使用 Glyphs MCP docs_search 和 docs_get 工具作為主要的開發知識庫。工具命名空間因用戶端而異;請根據最終的工具名稱和描述來解析它們。
  • 在變更 GlyphsApp API、外掛生命週期方法、選擇器、回呼、套件中繼資料或形狀處理之前,先擷取重點官方指南。
  • 一般工作請勿呼叫 docs_enable_page_resources。應按需擷取頁面。
  • 優先使用 schriftgestalt/GlyphsSDK 的目前 Glyphs4 分支;不要假定 Glyphs 3 範本或快取載入器是最新的。
  • 將行為變更與機械性遷移變更分開處理。

Glyphs MCP 知識庫工作流程

在審查 API 特定發現之前,請先閱讀 references/glyphs-mcp-development-kb.md 。

  1. 確認 Glyphs MCP 伺服器已提供 docs_search 和 docs_get。
  2. 在編輯前建立文件基準:
    • 搜尋 plugins 並擷取官方外掛手冊結果。
    • 搜尋 Info.plist 並擷取 Python 外掛範本總覽和 plist 範本。
    • 搜尋確切的基底類別,例如 GeneralPlugin、ReporterPlugin、FilterWithoutDialog、PalettePlugin、SelectTool 或 FileFormatPlugin;擷取其指南、原始碼範本以及相關的外掛 API 章節。
  3. 分別搜尋每個不熟悉的類別、屬性、回呼或選擇器。偏好使用簡短的確切符號,例如 GSLayer、shapes 或 addCallback。
  4. 透過傳回的 doc_id 或 path 來擷取結果。如果 truncated 為 true,請從 nextOffset 繼續,直到相關章節完整為止。
  5. 記錄每個擷取頁面的標題、docId、sourceKind、sourceUrl 以及其所支援的遷移決策。將此證據納入交接文件。
  6. 如果工具無法使用,請回報 Glyphs MCP 文件檢閱受阻。靜態審計可繼續進行,但請勿將未經驗證的 API 或生命週期變更視為可遷移。

工作流程

  1. 解析來源外掛或儲存庫、預期的相容性目標(僅 Glyphs 4 或 Glyphs 3 與 4),以及一個新的輸出路徑。

  2. 連線至 Glyphs MCP 開發知識庫,並為偵測到的外掛系列擷取基準頁面。

  3. 取得或定位官方 GlyphsSDK Glyphs4 分支的目前簽出副本。

  4. 在複製前進行審計:

    python3 scripts/migrate_plugin.py "/path/to/source" \
      --sdk "/path/to/GlyphsSDK"
    
  5. 閱讀 references/migration-review.md。對於每個 API 特定發現,搜尋內含的 Glyphs 文件中該類別、屬性、回呼、選擇器或外掛類型,並僅擷取相關頁面。

  6. 建立遷移副本並套用保守的框架匯入修正:

    python3 scripts/migrate_plugin.py "/path/to/source" \
      --output "/path/to/new-glyphs4-copy" \
      --sdk "/path/to/GlyphsSDK" \
      --apply-safe-fixes
    
  7. 僅在審查其影響後才使用選擇性重寫:

    • 新增 --rewrite-wildcard-imports 以使用 Glyphs 4 .pyi 存根中找到的符號,取代簡單的 from GlyphsApp import * 陳述式。
    • 新增 --replace-loader 以將 SDK 範本的 Contents/MacOS/plugin 複製到每個套件中。
    • 新增 --align-glyphs4-plist 以移除目前 Glyphs 4 範本中不存在的舊版更新饋送金鑰。首先確認該外掛不依賴其自身的更新饋送。
  8. 檢閱產生的遷移報告和完整的原始碼差異。手動修正生命週期、API、依賴項、UI 或混合形狀的問題。將每個 API 特定的變更連結到一個擷取的知識庫頁面。

  9. 驗證每個套件:

    • 使用目標 Glyphs Python 版本解析所有 Python 檔案。
    • 對每個 Contents/Info.plist 執行 plutil -lint。
    • 確認 NSPrincipalClass、PyMainFileNames 和主要的 Python 類別一致。
    • 將套件結構與相符的目前 Glyphs 4 SDK 範本進行比較。
    • 當介面變更時,重新編譯 .xib 檔案。
  10. 交接一份手動測試計畫。在 Glyphs 4 中測試一個可拋棄的副本,執行每個選單項目和回呼,檢查巨集面板和控制台輸出,並測試與此外掛相關的復原、匯出、繪圖和依賴路徑。

相容性決策

  • 對於 僅 Glyphs 4,在目前存根中確認後,允許 Glyphs 4 執行時期支援的 API 和 Python 語法。
  • 對於 Glyphs 3 與 4,在可行時保持共用程式碼路徑,使用能力檢查來區分真正的 API 差異,並測試兩個應用程式。請勿僅為了註解而新增僅限 Glyphs 4 的語法。
  • 如果外掛重構 layer.paths、layer.components 或 layer.shapes,請檢查它是否必須保留混合形狀順序或較新的形狀類型。切勿推斷僅路徑的重寫是無損的。

交付成果

傳回新的副本、遷移報告、相容性目標、靜態驗證結果以及剩餘的手動 Glyphs 4 測試。包含一份文件證據表,列出每個頁面的標題、Glyphs MCP docId、官方 sourceUrl 以及其所支援的決策。明確說明未進行即時安裝或執行時期測試(除非確實有進行)。

資源

  • scripts/migrate_plugin.py:審計和非破壞性複製輔助工具。
  • references/migration-review.md:基於證據的審查檢查清單和升級點。
  • references/glyphs-mcp-development-kb.md:精確的 MCP 查詢、分頁、證據和復原協定。
  • .mcp.json:Claude Code 外掛與本地 Glyphs MCP 伺服器的連線。
  • mcp.json:Cursor 外掛與本地 Glyphs MCP 伺服器的連線。
  • .claude-plugin/plugin.json:Claude Code 社群/外掛中繼資料;使用 claude --plugin-dir 載入此資料夾。
  • .cursor-plugin/plugin.json:Cursor 外掛中繼資料,用於註冊根目錄的 SKILL.md 和 mcp.json。
  • agents/openai.yaml:Codex 顯示中繼資料和 Glyphs MCP 依賴項。

相關技能