Communitygithub.com

thierryc/glyphs3-to-glyphs4-skill

Glyphs 3 Python 플러그인을 Glyphs 4로 마이그레이션하기 위한 에이전트 스킬입니다. Glyphs MCP 문서를 참고하여 안전하게 마이그레이션합니다.

glyphs3-to-glyphs4-skill란 무엇인가요?

이 스킬은 Glyphs 3용 Python 플러그인을 Glyphs 4로 마이그레이션하는 작업을 안내합니다. 원본 플러그인을 보존하고, 제자리 마이그레이션(in-place migration)을 금지하며, Glyphs를 설치, 실행, 다시 로드하지 않는 등 엄격한 가드레일을 따릅니다. Glyphs MCP의 `docs_search` 및 `docs_get` 도구를 주 개발 지식 베이스로 활용하여 API 관련 변경 사항을 공식 문서를 바탕으로 확인합니다. `Schriftgestalt/GlyphsSDK` 저장소의 `Glyphs4` 브랜치를 기준으로 하며, 스크립트 `scripts/migrate_plugin.py`를 통해 감사(audit) 및 비파괴적 복사(non-destructive copy)를 수행합니다. Claude Code, Cursor, Codex를 지원하며, `.mcp.json`, `mcp.json`, `.claude-plugin/plugin.json`, `.cursor-plugin/plugin.json`, `agents/openai.yaml` 설정 파일을 통해 통합됩니다. 최종 산출물로 마이그레이션된 플러그인, 보고서, 정적 검증 결과, 수동 테스트 계획 및 문서 증거 테이블을 제공합니다.

지원 대상✓Claude Code✓Codex CLI✓Cursor
npx skills add thierryc/glyphs3-to-glyphs4-skill

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Glyphs 3 플러그인을 Glyphs 4로 마이그레이션하기

검토 가능한 마이그레이션 복사본을 만듭니다. 정적 마이그레이션은 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. docs_search 및 docs_get이 Glyphs MCP 서버에서 사용 가능한지 확인합니다.
  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 only 또는 Glyphs 3 and 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. 생성된 마이그레이션 보고서와 전체 소스 diff를 검토합니다. 생명주기, API, 의존성, UI 또는 혼합 셰이프 관련 발견 사항을 수동으로 수정합니다. 각 API별 변경 사항을 가져온 KB 페이지에 연결합니다.

  9. 모든 번들을 검증합니다:

    • 의도된 Glyphs Python 버전으로 모든 Python 파일을 구문 분석합니다.
    • 모든 Contents/Info.plist에서 plutil -lint를 실행합니다.
    • NSPrincipalClass, PyMainFileNames 및 기본 Python 클래스가 일치하는지 확인합니다.
    • 번들 구조를 일치하는 최신 Glyphs 4 SDK 템플릿과 비교합니다.
    • 인터페이스가 변경된 경우 .xib 파일을 다시 컴파일합니다.
  10. 수동 테스트 계획을 전달합니다. 일회용 복사본을 Glyphs 4에서 테스트하고, 모든 메뉴 항목과 콜백을 실행하며, Macro Panel 및 Console 출력을 검사하고, 플러그인과 관련된 실행 취소, 내보내기, 드로잉 및 의존성 경로를 테스트합니다.

호환성 결정

  • Glyphs 4 only의 경우: 현재 스텁에서 확인한 후 Glyphs 4 런타임이 지원하는 API 및 Python 구문만 허용합니다.
  • Glyphs 3 and 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: 로컬 Glyphs MCP 서버에 대한 Claude Code 플러그인 연결.
  • mcp.json: 로컬 Glyphs MCP 서버에 대한 Cursor 플러그인 연결.
  • .claude-plugin/plugin.json: Claude Code 커뮤니티/플러그인 메타데이터; 이 폴더를 claude --plugin-dir로 로드합니다.
  • .cursor-plugin/plugin.json: 루트 SKILL.md 및 mcp.json을 등록하는 Cursor 플러그인 메타데이터.
  • agents/openai.yaml: Codex 디스플레이 메타데이터 및 Glyphs MCP 의존성.

관련 스킬