relaypublisher manifest assignments categories scripts_ja - tfsugjp/skills GitHub Wiki
relaypublisher-manifest skill のバンドルチェッカーとガイダンスを拡張し、対象 Relaypublisher ツールでは local かつ Graph 不要でありながら、前回の作業ではスコープ外とした3つの manifest 領域を静的検証できるようにします: Assignments(Windows/macOS 共通)、Categories(共通)、macOS の pre/post-install Scripts(AppType: pkg のみ)。
| 種別 | Issue |
|---|---|
| Parent | Issue #42 |
| Sub-issue | Issue #43 |
| Sub-issue | Issue #44 |
| Sub-issue | Issue #45 |
直前の作業で、relaypublisher-manifest(それまで macOS 専用)に Windows Win32 の authoring/validation 対応を追加し、Package/Install/Detection と macOS Source 共通の source-item 形式をカバーしました。Assignments・Categories・macOS Scripts は、対象ツールの schema 上は実在する local・Graph 不要の静的検証対象でありながら、当時は「Windows対応の追加」というスコープを超えると判断し意図的に見送りました。本 plan はその follow-up として明示的に追跡します。
3領域とも、既存チェックで確立した内容と同じ扱いを行います: バンドルチェッカー(scripts/manifest_policy.py)への専用 RP0xx コード追加、ユニットテストと YAML フィクスチャの追加、該当 reference doc の static-validation checklist 更新、docs/plan/relaypublisher-manifest.md の「out of scope」注記からの除去。
-
Assignments(共通):
Target/GroupId/Mode/Intent/FilterId/FilterMode/Settings.Notificationsの enum・必須性ルール、重複 target の検出、macOSAppType: pkgにおけるIntent: uninstall禁止。 - Categories(共通): 非空白・前後空白なし・大文字小文字を区別しない重複チェック、および省略と空配列の意味的な違いの保持(省略は既存関係を変更しない、空配列は全解除)。tenant 側の category 名前解決はスコープ外のまま。
-
macOS Scripts(
AppType: pkgのみ):windows/lobentry での禁止、パス安全性と.sh拡張子チェックを常時実施、--repo-root指定時は既存のIconパターンに倣い存在・BOM・shebang・文字数上限も追加でチェック。
3領域とも package、publish、--force、Microsoft Graph 呼び出し、tenant/app/assignment の変更は一切追加しません。すべて local な静的チェックにとどまります。
- Issue #43 で Assignments 検証を追加します。
- Issue #44 で Categories 検証を追加します。
- Issue #45 で macOS pre/post-install Scripts 検証を追加します。
各 sub-issue 完了後に python scripts/validate_marketplaces.py と relaypublisher-manifest のユニットテスト一式(python3 tests/test_manifest_policy.py -v)を実行し、両方が green であることを確認します。新規フィクスチャはバンドルチェッカー CLI を直接実行して検証します(valid は exit 0、invalid は想定する RP0xx コードとともに exit 1)。