sap/open-ux-tools

odata-vocabularies-sync

Sync odata-vocabularies package — update all vocabulary resource files to their latest published versions, and optionally add a new vocabulary given its JSON URL.

Trending #7782 Hot #2513 First seen Aug 6, 2026

Installation

$ npx skills add sap/open-ux-tools --skill odata-vocabularies-sync

Summary

  • Sync odata-vocabularies package — update all vocabulary resource files to their latest published versions, and optionally add a new vocabulary given its JSON URL.
  • Use when asked to update vocabularies, refresh vocabulary resources, or add a new vocabulary to @sap-ux/odata-vocabularies.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from sap/open-ux-tools · top by installs.

npx skills add sap/open-ux-tools

Browse all from sap/open-ux-tools

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 156
License LICENSES
Default branch main
Open issues 222
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.0.0
More metadata
author
sap-fiori-tools
version
1.0.0

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 6,256 B
  • docs SUMMARY.md 319 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 204 installs

SKILL.md

odata-vocabularies-sync

Keeps the packages/odata-vocabularies package in sync with the upstream OData vocabulary sources.

  • No argument — update all existing vocabulary resource files to their latest published versions.
  • With a URL argument — register and add the new vocabulary first, then update everything.

All file edits are relative to packages/odata-vocabularies/.

Note: com.sap.cds.vocabularies.* files (ObjectModel, AnalyticsDetails) are hand-crafted and not managed by this skill. Do not attempt to add them via a URL.


Step 1 — Add a new vocabulary (only when a URL argument is provided)

1a. Fetch and inspect the vocabulary JSON

Fetch the JSON at the provided URL (must end in .json — XML URLs are not supported by the update tool). Extract:

  • namespace — the key of the top-level schema object (e.g. Org.OData.NewThing.V1 or com.sap.vocabularies.NewThing.v1)
  • alias — the value of $Alias inside that schema object (e.g. NewThing)

Determine the vocabulary family from the namespace:

  • Starts with Org.OData.OASIS vocabulary
  • Starts with com.sap.vocabularies.SAP vocabulary
  • Starts with com.sap.cds.CDS vocabulary — stop. These files are hand-crafted and cannot be added via this skill. Explain this to the user.
  • Anything else → stop and ask the user to confirm the family before proceeding.

1b. Edit tools/update.ts

Add an entry to SUPPORTED_VOCABULARIES in alphabetical order within the existing entries:

'<namespace>': {
    uri: '<the provided URL>'
},

Note: The entry can include update: false to pin the vocabulary and exclude it from future automatic updates (e.g. com.sap.vocabularies.CDS.v1 uses this because it is hand-maintained). Omit the field for normal auto-updating behaviour.

1c. Edit src/resources/index.ts

Make all six additions. All six are mandatory — missing any one will cause a runtime error.

  1. Import — insert alphabetically by alias in the single import block (OASIS and SAP imports are interleaved by alias, not grouped by family):

``typescript import <Alias> from './<namespace>.js'; ` Use the $Alias value from the JSON as the import identifier. Exception: if the alias is a reserved JS keyword or built-in (e.g. JSON, Map, Error), prefix it to form a valid identifier (e.g. JSONODataJSON). Also check existing imports for precedent — some aliases are shortened for brevity (e.g. AuthorizationAuth`).

  1. Namespace union type — add to the matching family type:

- OASIS → OasisVocabularyNamespace - SAP → SapVocabularyNamespace ``typescript | '<namespace>' ``

  1. Alias union type — add to the matching family type:

- OASIS → OasisVocabularyAlias - SAP → SapVocabularyAlias ``typescript | '<Alias>' ``

  1. NAMESPACETOALIAS Map:

``typescript ['<namespace>', '<Alias>'], ``

  1. ALIASTONAMESPACE Map:

``typescript ['<Alias>', '<namespace>'], ``

  1. vocabularies Record:

``typescript '<namespace>': <Alias>, ``

1d. Edit src/loader.ts

Add the namespace to SUPPORTEDVOCABULARYNAMESPACES in alphabetical order within its family block:

'<namespace>',

1e. Edit README.md

Add the alias to the correct bullet list in the "Supported Vocabularies" section, in alphabetical order:

  • OASIS namespace → OASIS Vocabularies list
  • SAP namespace → SAP Vocabularies list
* <Alias>

Step 2 — Run the update tool

This fetches the latest JSON for every registered vocabulary (including any newly added one) and regenerates all src/resources/*.ts resource files.

Run from the repo root:

pnpm --filter @sap-ux/odata-vocabularies update:vocabularies

If the tool fails, stop and report the full error output before proceeding.


Step 3 — Audit and fix README

Cross-check the README against the registered vocabularies and add any missing entries.

  1. Read src/resources/index.ts and collect all namespaces from NAMESPACETOALIAS, split by family:

- OASIS: namespaces starting with Org.OData. - SAP: namespaces starting with com.sap.vocabularies. excluding com.sap.vocabularies.CDS.v1 - Skip all com.sap.cds. namespaces (hand-crafted, not listed in README)

  1. For each collected namespace, read the corresponding generated resource file src/resources/<namespace>.ts and extract the $Alias value — this is the authoritative published alias used as the display name in README.
  1. Read README.md and find the two bullet lists under "Supported Vocabularies":

- The OASIS Vocabularies list - The SAP Vocabularies list

  1. For each alias not yet present in the correct list, insert it in alphabetical order.

If the README is already complete, do nothing.


Step 4 — Run tests and update snapshots

pnpm --filter @sap-ux/odata-vocabularies test -- -u

Report any test failures that are not snapshot-related. Snapshot updates are expected only when vocabulary content has actually changed (either upstream drift detected by the update tool, or a newly added vocabulary). If snapshots change beyond what was updated, inspect the diff before accepting — it may indicate a regression.


Step 5 — Report

Summarise what was done:

  • If a new vocabulary was added: confirm the namespace, alias, family, and all files changed.
  • If any README entries were missing and added, list them.
  • List vocabulary resource files regenerated by the update tool.
  • Confirm tests pass.