odata-vocabularies-sync について
`packages/odata-vocabularies` を上流の OData ボキャブラリーに合わせて保守する開発スキルです。登録済みリソースの更新や JSON URL からの新規登録を案内し、README の確認とテストも行います。
主な機能
- 01登録済みボキャブラリーリソースの更新
- 02JSON URL からのボキャブラリー追加
- 03名前空間とエイリアスの登録管理
- 04README のサポート一覧を確認
- 05テスト実行とスナップショット更新
活用シーン
- 01上流リリースに合わせたリソース同期
- 02OASIS または SAP ボキャブラリーの追加
- 03サポート一覧の不足項目を補完
- 04リソース更新後のテストとスナップショット検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sap/ open-ux-tools --skill odata-vocabularies-syncインストール後、Claude Code で/odata-vocabularies-syncを入力して読み込まれたか確認します。
詳細
odata-vocabularies-sync
上流の OData 語彙ソースに合わせて、packages/odata-vocabularies パッケージを同期します。
- 引数なし — 既存のすべての語彙リソースファイルを、公開済みの最新バージョンに更新します。
- URL 引数あり — まず新しい語彙を登録して追加し、その後すべてを更新します。
ファイルの編集はすべて packages/odata-vocabularies/ を基準に行います。
注:
com.sap.cds.vocabularies.*ファイル(ObjectModel、AnalyticsDetails)は手動で作成されており、このスキルでは管理されていません。URL を使って追加しようとしないでください。
ステップ 1 — 新しい語彙を追加する(URL 引数が指定された場合のみ)
1a. 語彙の JSON を取得して確認する
指定された URL の JSON を取得します(.json で終わる必要があります。XML URL は更新ツールでサポートされていません)。以下を抽出します。
namespace— 最上位のスキーマオブジェクトのキー(例:Org.OData.NewThing.V1またはcom.sap.vocabularies.NewThing.v1)alias— スキーマオブジェクト内の$Aliasの値(例:NewThing)
namespace から語彙ファミリーを判定します。
Org.OData.で始まる → OASIS 語彙com.sap.vocabularies.で始まる → SAP 語彙com.sap.cds.で始まる → CDS 語彙 — 中止してください。 これらのファイルは手動で作成されているため、このスキルでは追加できません。このことをユーザーに説明してください。- 上記以外 → 中止し、先に進む前にユーザーにファミリーを確認してください。
1b. tools/update.ts を編集する
既存のエントリー内でアルファベット順になるよう、SUPPORTED_VOCABULARIES にエントリーを追加します。
'<namespace>': {
uri: '<the provided URL>'
},
注: エントリーに
update: falseを含めると、その語彙を固定し、今後の自動更新の対象から除外できます(例:com.sap.vocabularies.CDS.v1は手動管理されているため、この設定を使用しています)。通常どおり自動更新する場合は、このフィールドを省略します。
1c. src/resources/index.ts を編集する
6 つの追加をすべて行います。いずれか 1 つでも欠けると、実行時エラーが発生します。
-
インポート — 単一のインポートブロック内で、エイリアスのアルファベット順に挿入します(OASIS と SAP のインポートはファミリー別ではなく、エイリアス順に混在しています)。
import <Alias> from './<namespace>.js';JSON の
$Aliasの値をインポート識別子として使用します。例外: エイリアスが予約済みの JS キーワードまたは組み込み識別子(例:JSON、Map、Error)の場合は、有効な識別子になるよう接頭辞を付けます(例:JSON→ODataJSON)。また、既存のインポートに先例がないか確認してください。一部のエイリアスは簡潔にするため短縮されています(例:Authorization→Auth)。 -
Namespace 共用体型 — 該当するファミリーの型に追加します。
- OASIS →
OasisVocabularyNamespace - SAP →
SapVocabularyNamespace
| '<namespace>' - OASIS →
-
Alias 共用体型 — 該当するファミリーの型に追加します。
- OASIS →
OasisVocabularyAlias - SAP →
SapVocabularyAlias
| '<Alias>' - OASIS →
-
NAMESPACE_TO_ALIASMap:['<namespace>', '<Alias>'], -
ALIAS_TO_NAMESPACEMap:['<Alias>', '<namespace>'], -
vocabulariesRecord:'<namespace>': <Alias>,
1d. src/loader.ts を編集する
該当するファミリーブロック内でアルファベット順になるよう、SUPPORTED_VOCABULARY_NAMESPACES に namespace を追加します。
'<namespace>',
1e. README.md を編集する
「Supported Vocabularies」セクションの該当する箇条書きに、エイリアスをアルファベット順に追加します。
- OASIS namespace → OASIS Vocabularies リスト
- SAP namespace → SAP Vocabularies リスト
* <Alias>
ステップ 2 — 更新ツールを実行する
登録されているすべての語彙(新たに追加したものも含む)の最新 JSON を取得し、すべての src/resources/*.ts リソースファイルを再生成します。
リポジトリのルートから実行します。
pnpm --filter @sap-ux/odata-vocabularies update:vocabularies
ツールが失敗した場合は、作業を中止し、続行する前にエラー出力全体を報告してください。
ステップ 3 — README を監査して修正する
README を登録済みの語彙と照合し、不足している項目を追加します。
-
src/resources/index.tsを読み、NAMESPACE_TO_ALIASのすべての名前空間を収集し、ファミリーごとに分類します。- OASIS:
Org.OData.で始まる名前空間 - SAP:
com.sap.vocabularies.で始まる名前空間。ただしcom.sap.vocabularies.CDS.v1は除外します。 com.sap.cds.の名前空間はスキップします(手作業で作成されており、README には記載されていません)。
- OASIS:
-
収集した各名前空間について、対応する生成済みリソースファイル
src/resources/<namespace>.tsを読み、$Aliasの値を抽出します。これは README で表示名として使われる、正式に公開されたエイリアスです。 -
README.mdを読み、「Supported Vocabularies」の下にある2つの箇条書きリストを探します。- OASIS 語彙のリスト
- SAP 語彙のリスト
-
各エイリアスが該当するリストにまだ存在しない場合は、アルファベット順に挿入します。
README がすでに完全な場合は、何も変更しません。
ステップ 4 — テストを実行してスナップショットを更新する
pnpm --filter @sap-ux/odata-vocabularies test -- -u
スナップショットに関係しないテストの失敗があれば報告します。スナップショットの更新が想定されるのは、語彙の内容が実際に変更された場合のみです(更新ツールが上流の差分を検出した場合、または新しい語彙が追加された場合)。更新内容を超えてスナップショットに変更がある場合は、受け入れる前に差分を確認してください。リグレッションを示している可能性があります。
ステップ 5 — 報告する
実施した内容を要約します。
- 新しい語彙を追加した場合は、名前空間、エイリアス、ファミリー、および変更したすべてのファイルを明記します。
- README に不足していて追加した項目があれば、一覧にします。
- 更新ツールによって再生成された語彙リソースファイルを一覧にします。
- テストがすべて成功したことを確認します。