modernize-ui5-app

modernize-ui5-app is a skill for Claude Code from arc-mcp/arc-1. It costs 118 tokens per session (20,820 once invoked), scanned C, original, MIT.

A converter that moves a legacy UI5 freestyle JavaScript app to a modern TypeScript app. UI5 is SAP’s web interface framework; TypeScript adds checked types to JavaScript, and freestyle means the app uses custom controllers and layouts.

In plain words
What is it for?
Modernizing a legacy UI5 app with async loading, manifest configuration, typed event handlers, ES modules, a base controller, a newer theme, and separate modern output.
Why use it?
It replaces older browser-loading and untyped code patterns with a structured, typed application while keeping the original app untouched.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: mentions CLAUDE.md.

Needs its repository: it reads a path above its own folder, which exists only inside the repository. The line is import Component from "../Component";.

Part of the arc-1 plugin — 24 skills, 8 commands, 1 MCP server shipped together

Good fit Modernizing a legacy UI5 app with async loading, manifest configuration, typed event handlers, ES modules, a base controller, a newer theme, and separate modern output.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.

Clone the repo
git clone --depth 1 https://github.com/arc-mcp/arc-1
agentmods
npx agentmods add skills/arc-mcp/arc-1/modernize-ui5-app

Made for: Claude Code.

Or install arc-1, the plugin that ships this one along with the rest of its 24 skills, 8 commands, 1 MCP server.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for modernize-ui5-app

README.md
[![agentmods](https://agentmods.dev/badge/skills/arc-mcp/arc-1/modernize-ui5-app/github.svg)](https://agentmods.dev/skills/arc-mcp/arc-1/modernize-ui5-app)
Your own site
<a href="https://agentmods.dev/skills/arc-mcp/arc-1/modernize-ui5-app"><img src="https://agentmods.dev/badge/skills/arc-mcp/arc-1/modernize-ui5-app/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for modernize-ui5-app

Your own site · 80×15
<a href="https://agentmods.dev/skills/arc-mcp/arc-1/modernize-ui5-app"><img src="https://agentmods.dev/badge/skills/arc-mcp/arc-1/modernize-ui5-app.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 118 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 20,820 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00118 $0.20820
Opus 5 $0.00059 $0.10410
Sonnet 5 $0.00024 $0.04164
Haiku 4.5 $0.00012 $0.02082

Measured 10d ago against content hash 9f1d167a8eff, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade C, and why

modernize-ui5-app scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

Bash: rm -rf <target>/* <target>/.[!.]* # safely empty <target>/ while keeping the folder

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

Bash: curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8080/index.html
skills/modernize-ui5-app/SKILL.md · 1,830 lines

How it starts

The opening of the file, as written. The whole thing — 1,830 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Modernize UI5 freestyle JS app ➜ UI5 TypeScript app

Convert a legacy UI5 freestyle JavaScript app (typical 2018–2021 era — sync bootstrap, JS controllers, jQuery.sap.*, global formatter, ES5 patterns, no types, sap_belize) into a modern UI5 TypeScript app on a recent 1.x release with async loading, manifest-driven configuration, a proper BaseController, sap_horizon theme, ES modules, typed event handlers, and clean ui5-linter + tsc --noEmit output. Runs side-by-side: the legacy app stays untouched at <source_app>/; the modern app lands in <modern_app>/.

This skill is one of two parallel UI paths after the RAP backend lands. Pick this one if the target architecture is a freestyle TypeScript app (custom controllers, manual binding, explicit i18n). Pick convert-ui5-to-fiori-elements.md instead if the target is a Fiori Elements V4 app (annotation-driven; minimal custom code). Both start from the same legacy JS app + the same V4 RAP service produced by migrate-segw-to-rap.

                  migrate-segw-to-rap.md  (backend: SEGW V2 → RAP V4)
                            │
              ┌─────────────┴─────────────┐
              ▼                           ▼
    modernize-ui5-app.md      convert-ui5-to-fiori-elements.md
        (freestyle TS)               (Fiori Elements V4)

Path/namespace placeholders. <source_app>/, <modern_app>/, <source_namespace>, <modern_namespace> are user-provided. Defaults: source is legacy-*-app/ (sibling of the target); modern app namespace is derived from source by appending .modern.


Which MCPs this skill uses (and which it doesn't)

MCP Used for When
UI5 MCP (mcp__SAPUI5_MCP_Server__*) Authoritative TS conversion guidelines, general UI5 guidelines, app scaffolding, API reference lookups, linter, manifest validator, version info Throughout — this is the primary MCP for this skill
sap-docs MCP (mcp__sap-docs__*) OData V4 binding patterns, draft handling, control documentation When V2→V4 binding behaviour is non-obvious (e.g. composite key on draft, $expand=_Tasks, action invocation)
arc-1 MCP OPTIONAL — service binding URL lookup, status-code semantics Only if the V4 URL isn't readily available (e.g. you can't read the FE app's manifest); skip otherwise
fiori-mcp NOT USED This is a freestyle TS app, not Fiori Elements — no annotations to generate

Read the full file on GitHub · 1,830 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 10d ago First seen · 1,830 lines · 118 tokens per session scan C 9f1d167a8eff

Subscribe to this mod's changes

modernize-ui5-app is a skill published in the GitHub repository arc-mcp/arc-1 (183 stars, last pushed yesterday), licensed MIT. It adds 118 tokens to every session and 20,820 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it C with 2 findings (recursive force delete, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

fast-typescript-check

Keep www-sacred's TypeScript fast to type-check and fast to run. Use when touching the ASCII/canvas animation components (the only real per-frame code here), tightening type-check wall-clock, or auditing a change for runtime or compiler regressions. Scoped to this repo — a React 19 / Next.js 16 component library plus…

internet-development/www-sacred · 84 tokens

onejs-setup-and-overview

Use this skill whenever the user wants to build or set up user interface in a Unity project using OneJS, React, TypeScript, or JSX, e.g. 'add a main menu to my game', 'build a settings screen', 'make a HUD', 'set up OneJS', 'my OneJS panel is blank', 'the UI is not hot reloading'. Covers confirming OneJS is installed…

Singtaa/OneJS · 199 tokens

coding-standards

A set of general coding standards and practical patterns for TypeScript, JavaScript, React, and Node.js. It covers readable naming, simple designs, avoiding repetition, and delaying unnecessary features.

loulanyue/awesome-claude-notes · 41 tokens

typescript-rules

React/TypeScript frontend development rules including type safety, component design, state management, and error handling. Use when implementing React components, TypeScript code, or frontend features.

shinpr/claude-code-workflows · 39 tokens

electron-development

Electron development guidelines for building cross-platform desktop applications with JavaScript/TypeScript.

Mindrally/skills · 18 tokens

create-custom-widget

Build a Mendix pluggable widget from scratch with React and TypeScript and package it as an .mpk. Use when no marketplace or built-in widget covers what is needed and a custom React component has to be written.

mendixlabs/mxcli · 50 tokens