ui5-version-upgrade
Skill243 starsChanged 6 months agoApache-2.0View on GitHub
Plan and execute a SAPUI5/OpenUI5 version upgrade. Use when the user is bumping the UI5 version in manifest.json, ui5.yaml, package.json, or an existing UI5 app and wants to identify deprecations in use, fixes that remove local workarounds, relevant new features, manifest/schema issues, and API replacements. Combines this server's `ui5_version_diff` tool with SAP's `@ui5/mcp-server` tools.
We split this skill into the rules it gives an agent
19 rules. About 0 are common, 9 are distinctive, and 10 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 35
Library flavor: use SAPUI5 if the app depends on commercial libraries such as sap.ui.comp, sap.suite.*, sap.fe, sap.ui.mdc, or FLP/ushell.
- Very specific: line 36
Declared UI5 libraries: read sap.ui5.dependencies.libs and use them to focus feature/fix review.
- Very specific: line 60
Use get_guidelines once per workflow to anchor coding recommendations.
- Distinctive: line 79
Use this for replacement details.
- Very specific: line 83
Search project comments and code for TODO, FIXME, workaround, BCP/ticket IDs, and symptom words.
- Distinctive: line 89
If there is a matching fix, cite the entry and commit URL, then verify whether the local workaround can be removed safely.
- Distinctive: line 99
Keep this selective. Mention features that plausibly affect the app's libraries or current code, not every framework feature.
- Distinctive: line 110
After making fixes, rerun the linter and manifest validation.
- Distinctive: line 114
Default to one concise Markdown report:
- Very specific: line 123
Keep raw diff output out of the report.
- Very specific: line 127
Prefer exact x.y.z versions.
- Very specific: line 129
If meta.notes says the requested release is newer than the local bundle, do not attempt runtime web fetches.
- Very specific: line 130
Do not run scaffolding tools (create_ui5_app, create_integration_card) unless the user requested creation.
- Distinctive: line 131
Do not run project-local UI5 MCP tools without a real project path.
- Distinctive: line 132
Do not present every deprecation as required work.
- Distinctive: line 133
Prefer structured tool results and targeted filtered calls over passing broad intermediate lists through the model.
- Very specific: line 137
If SAP @ui5/mcp-server is unavailable, proceed with degraded coverage: use ui5_version_diff, local file inspection, and rg across …
- Very specific: line 138
If ui5_version_diff reports that the local bundle is missing or stale, refresh the bundle during setup/rebuild with npm run …
- Distinctive: line 139
If no versions match, check version spelling and patch-level availability before concluding that there were no changes.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
UI5 Version Upgrade
A migration workflow for SAPUI5/OpenUI5 projects. Use two MCP servers together:
mcp-sap-docsprovidesui5_version_diff, backed by a local ui5-lib-diff all-changes JSON bundle. It answers "what changed between versions?" and includes SAPUI5 What's New entries for the same range.- SAP
@ui5/mcp-serverruns against the local project. It answers "what does this app use and what is broken?"
Do not scrape the ui5-lib-diff browser route for JSON. The browser URL with versionFrom, versionTo, and ui5Type is client-rendered. Use ui5_version_diff; it reads the local all-changes.json bundle and returns all matching structured entries. npm run setup refreshes the bundle automatically; if it is missing or stale, refresh it during setup/rebuild with npm run download:ui5-lib-diff or point UI5_LIB_DIFF_BUNDLE_PATH to a local copy. The runtime is local-only and must not rely on external requests.
UI5 MCP tools to use
Current SAP @ui5/mcp-server capabilities include:
get_project_info: read project metadata and UI5 configuration.get_version_info: retrieve UI5 framework version information.get_guidelines: fetch UI5 coding standards and best practices.get_api_reference: fetch UI5 API documentation for controls/classes/methods.run_ui5_linter: run@ui5/linteragainst the app.run_manifest_validation: validatewebapp/manifest.json.get_typescript_conversion_guidelines: guidance for JavaScript-to-TypeScript UI5 work.create_ui5_app,create_integration_card,get_integration_cards_guidelines: scaffolding/card-specific work. Use only when the user asks for creation or card work.
Inputs
Determine these before producing recommendations:
- Project root: required for UI5 MCP project tools.
- Current version (
from_version): preferget_project_info/get_version_info; otherwise readwebapp/manifest.json,ui5.yaml, andpackage.json. - Target version (
to_version): ask if absent. Use the fullx.y.zform. - Library flavor: use
SAPUI5if the app depends on commercial libraries such assap.ui.comp,sap.suite.*,sap.fe,sap.ui.mdc, or FLP/ushell; otherwise useOpenUI5. - Declared UI5 libraries: read
sap.ui5.dependencies.libsand use them to focus feature/fix review.
Workflow
1. Establish scope
Call:
ui5_version_diff(library, from_version, to_version)Summarize versionsInRange, counts, totalEntries, whatsNewTotalEntries, and any meta.notes. Keep meta.sourceDataPath and meta.generatedAt for traceability and stale-bundle checks. If the user asks about one release, call ui5_version_diff(library, version=<x.y.z>).
2. Get project facts
Call:
get_project_info(projectPath=<project root>)
get_version_info(projectPath=<project root>)
get_guidelines()Use get_guidelines once per workflow to anchor coding recommendations. Do not repeatedly fetch broad guidelines inside loops.
3. Find deprecations actually used
Call:
ui5_version_diff(library, from_version, to_version, types=["DEPRECATED"])
run_ui5_linter(projectPath=<project root>)Cross-reference diff deprecations with linter findings and code search. Report only confirmed or strongly suspected usage in the app. Skip deprecations that do not match the project.
For confirmed APIs, call:
get_api_reference(name=<control/class/method>)Use this for replacement details. Do not invent replacements from memory.
4. Find removable workarounds
Search project comments and code for TODO, FIXME, workaround, BCP/ticket IDs, and symptom words. For each meaningful symptom:
ui5_version_diff(library, from_version, to_version, types=["FIX"], query=<symptom>)If there is a matching fix, cite the entry and commit URL, then verify whether the local workaround can be removed safely.
5. Surface relevant features
For each declared UI5 library:
ui5_version_diff(library, from_version, to_version, types=["FEATURE"], ui5_library=<declared lib>)Keep this selective. Mention features that plausibly affect the app's libraries or current code, not every framework feature.
6. Validate manifest and rerun after edits
Call:
run_manifest_validation(manifestPath=<project root>/webapp/manifest.json)
run_ui5_linter(projectPath=<project root>)After making fixes, rerun the linter and manifest validation. Treat these tool results as stronger evidence than general release-note text.
Output
Default to one concise Markdown report:
- Scope: flavor, from/to or single version, versions covered, counts, What's New count, source data path.
- Required fixes: deprecated API, replacement, file:line, evidence.
- Workarounds to remove: local workaround, matching UI5 fix, commit URL.
- Relevant features and What's New: grouped by used UI5 library or product area.
- Manifest and linter status: pass/fail with actionable details.
- Edit plan: concrete changes in order.
Keep raw diff output out of the report. The tool returns all matching entries; if the result is broad, make narrower follow-up calls with types, ui5_library, or query.
Guardrails
- Prefer exact
x.y.zversions. If a requested patch is unavailable,ui5_version_diffresolves it to the nearest lower available patch with the same major.minor, matching the ui5-lib-diff web app. - For ranges, use
(from_version, to_version]. For one release, useversion=<x.y.z>or pass only one version field. - If
meta.notessays the requested release is newer than the local bundle, do not attempt runtime web fetches. Tell the user the setup-time bundle is stale and should be refreshed before relying on that release. - Do not run scaffolding tools (
create_ui5_app,create_integration_card) unless the user requested creation. - Do not run project-local UI5 MCP tools without a real project path.
- Do not present every deprecation as required work. The app must use it, or the linter/code search must make it relevant.
- Prefer structured tool results and targeted filtered calls over passing broad intermediate lists through the model.
Fallbacks
- If SAP
@ui5/mcp-serveris unavailable, proceed with degraded coverage: useui5_version_diff, local file inspection, andrgacrosswebapp/**/*.{js,ts,xml,json}. Tell the user which UI5 MCP checks were skipped. - If
ui5_version_diffreports that the local bundle is missing or stale, refresh the bundle during setup/rebuild withnpm run download:ui5-lib-diffin the MCP server repo or pointUI5_LIB_DIFF_BUNDLE_PATHto a local copy. - If no versions match, check version spelling and patch-level availability before concluding that there were no changes.
In this repository10 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .cursor/rules/00-overview.mdcCursor rule
- .cursor/rules/10-search-stack.mdcCursor rule
- .cursor/rules/20-tools-and-apis.mdcCursor rule
- .cursor/rules/30-tests-and-output.mdcCursor rule
- .cursor/rules/40-deploy.mdcCursor rule
- .cursor/rules/50-metadata-config.mdcCursor rule
- .cursor/rules/60-adding-github-sources.mdcCursor rule
- .cursor/rules/70-tool-usage-guide.mdcCursor rule
- .cursor/rules/80-abap-integration.mdcCursor rule
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

