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.
git clone --depth 1 https://github.com/arc-mcp/arc-1npx agentmods add skills/arc-mcp/arc-1/modernize-ui5-appWrote 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.
[](https://agentmods.dev/skills/arc-mcp/arc-1/modernize-ui5-app)<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.
<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>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.
| Model | Per session | Once 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 |
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 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 islegacy-*-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 |
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.
- 10d ago First seen · 1,830 lines · 118 tokens per session scan C 9f1d167a8eff
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.
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…
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…
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.
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.
electron-development
Electron development guidelines for building cross-platform desktop applications with JavaScript/TypeScript.
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.