Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use this skill when working with the UI5 Linter (@ui5/linter) for static code analysis of SAPUI5/OpenUI5 applications and libraries. Covers setup, configuring linting rules, running the linter to detect deprecated APIs, global variable usage, CSP violations, and manifest issues. Supports autofix for deprecated API usage, global references, event handlers, and manifest properties. Includes CI/CD integration, pre-commit hooks, and UI5 2.x migration preparation.
.claude/skills/secondsky-sapui5-linter/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 75% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 106% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 79% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 57% | 0% |
Use this skill when adding or running @ui5/linter, configuring UI5 lint rules, preparing UI5 2.x migrations, autofixing deprecated APIs/globals/manifest issues, producing CI reports, or troubleshooting ui5lint parsing, performance, or configuration behavior.
The UI5 Linter (@ui5/linter) is a static code analysis tool designed specifically for SAPUI5 and OpenUI5 projects. It helps developers identify compatibility issues, deprecated APIs, security concerns, and best practice violations before upgrading to UI5 2.x.
Key Capabilities:
Current Version: 1.22.0 (verified via npm on 2026-06-14) Official Repository: https://github.com/UI5/linter
Node.js: v20.11.x, v22.0.0, or higher npm: v8.0.0 or higher
Verify prerequisites:
bashnode --version # Should be v20.11+ or v22+ npm --version # Should be v8+
Global Installation (recommended for CLI usage):
bashnpm install --global @ui5/linter
Local Installation (recommended for project integration):
bashnpm install --save-dev @ui5/linter
Verify installation:
bashui5lint --version # Should output: 1.22.0 or higher
Run linter from project root:
bash# Lint entire project ui5lint # Lint specific files or directories ui5lint "webapp/**/*.js" ui5lint "webapp/controller/" "webapp/view/" # Show detailed information about findings ui5lint --details
Development Workflow:
bash# 1. Check for issues with details ui5lint --details # 2. Preview automatic fixes UI5LINT_FIX_DRY_RUN=true ui5lint --fix # 3. Apply fixes ui5lint --fix # 4. Review changes git diff # 5. Verify fixes worked ui5lint --details
Create ui5lint.config.{js|mjs|cjs}:
javascriptmodule.exports = { rules: { // Recommended rules "no-deprecated-api": "error", "no-globals": "error", "no-ambiguous-event-handler": "error", "no-outdated-manifest-version": "error" }, exclude: [ "dist/**", "node_modules/**", "test/**/*.{spec,js,ts}" ] };
javascript// Strict for production, relaxed for development const isProduction = process.env.NODE_ENV === 'production'; module.exports = { rules: { "no-deprecated-api": isProduction ? "error" : "warn", "no-globals": isProduction ? "error" : "warn" }, exclude: [ "legacy/**/*", "**/*.min.js" ] };
bash# Basic linting ui5lint # With detailed output ui5lint --details # Fix auto-fixable issues ui5lint --fix # JSON output for CI/CD ui5lint --format json # HTML report for documentation ui5lint --format html --details # Performance monitoring ui5lint --perf
references/rules-complete.mdjson{ "scripts": { "lint": "ui5lint", "lint:fix": "ui5lint --fix", "lint:details": "ui5lint --details", "lint:ci": "ui5lint --quiet --format json > lint-results.json", "lint:report": "ui5lint --format html --details > lint-report.html" }, "devDependencies": { "@ui5/linter": "^1.22.0" } }
Symptom: Linter reports parsing errors Solution: Check for syntax errors in config files
Symptom: Autofix doesn't work Solution: Check autofix limitations in references/autofix-complete.md
Symptom: Performance issues on large codebase Solution: Add ignore patterns, use targeted linting
references/rules-complete.mdreferences/autofix-complete.mdreferences/performance.mdreferences/support-and-community.mdreferences/contributing.mdtemplates/ui5lint.config.mjstemplates/package.json.templatetemplates/husky-pre-commit.templatereferences/rules-complete.md - Complete reference for all 19 linting rulesreferences/autofix-complete.md - Detailed autofix capabilities and limitationsreferences/performance.md - Performance optimization guidereferences/support-and-community.md - Support channels and community resourcesreferences/contributing.md - Contributing guidelinestemplates/ui5lint.config.mjs - Configuration templatetemplates/package.json.template - Package.json templatetemplates/husky-pre-commit.template - Pre-commit hook templateLast Updated: 2026-06-14 | Version: 2.4.1 Previous Restructure Version: 1.0.1 | Lines Reduced: 376 (from 827) Next Review: 2026-02-25
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 12,711 | 5,393 | -58% | 1 | 1 | 0% | 2,240 | 3,585 | +60% | 0 | 0 | — |
case-02 | fail→pass | 11,464 | 4,089 | -64% | 1 | 1 | 0% | 1,912 | 3,337 | +75% | 0 | 0 | — |
case-03 | fail→pass | 10,490 | 7,436 | -29% | 1 | 1 | 0% | 1,944 | 4,011 | +106% | 0 | 0 | — |
case-04 | fail→pass | 9,267 | 2,751 | -70% | 1 | 1 | 0% | 1,696 | 3,033 | +79% | 0 | 0 | — |
case-05 | pass→pass | 6,664 | 3,283 | -51% | 1 | 1 | 0% | 1,141 | 3,109 | +172% | 0 | 0 | — |
case-06 | pass→pass | 4,721 | 3,241 | -31% | 1 | 1 | 0% | 748 | 3,128 | +318% | 0 | 0 | — |
case-07 | pass→pass | 5,058 | 5,058 | 0% | 1 | 1 | 0% | 967 | 3,550 | +267% | 0 | 0 | — |
case-08 | fail→pass | 13,281 | 5,604 | -58% | 1 | 1 | 0% | 2,323 | 3,657 | +57% | 0 | 0 | — |
case-09 | pass→pass | 13,860 | 10,158 | -27% | 1 | 1 | 0% | 2,535 | 4,311 | +70% | 0 | 0 | — |
case-10 | fail→pass | 12,329 | 3,331 | -73% | 1 | 1 | 0% | 2,112 | 3,128 | +48% | 0 | 0 | — |
case-11 | fail→pass | 9,652 | 2,850 | -70% | 1 | 1 | 0% | 1,647 | 2,952 | +79% | 0 | 0 | — |
case-12 | pass→pass | 7,476 | 2,526 | -66% | 1 | 1 | 0% | 1,256 | 2,877 | +129% | 0 | 0 | — |
case-13 | fail→pass | 11,545 | 6,633 | -43% | 1 | 1 | 0% | 2,080 | 3,735 | +80% | 0 | 0 | — |
case-14 | fail→pass | 12,082 | 4,282 | -65% | 1 | 1 | 0% | 2,072 | 3,260 | +57% | 0 | 0 | — |
case-15 | pass→pass | 7,763 | 2,074 | -73% | 1 | 1 | 0% | 1,303 | 2,853 | +119% | 0 | 0 | — |
case-16 | fail→pass | 11,297 | 2,692 | -76% | 1 | 1 | 0% | 1,839 | 2,925 | +59% | 0 | 0 | — |
case-17 | pass→pass | 10,805 | 6,777 | -37% | 1 | 1 | 0% | 1,818 | 3,658 | +101% | 0 | 0 | — |
case-18 | fail→pass | 3,267 | 1,751 | -46% | 1 | 1 | 0% | 539 | 2,797 | +419% | 0 | 0 | — |
case-19 | pass→pass | 12,678 | 8,997 | -29% | 1 | 1 | 0% | 2,305 | 4,152 | +80% | 0 | 0 | — |
case-20 | pass→pass | 11,546 | 7,589 | -34% | 1 | 1 | 0% | 2,106 | 3,937 | +87% | 0 | 0 | — |
case-21 | pass→pass | 5,308 | 3,497 | -34% | 1 | 1 | 0% | 887 | 3,132 | +253% | 0 | 0 | — |
case-22 | pass→pass | 16,139 | 13,509 | -16% | 1 | 1 | 0% | 2,606 | 4,655 | +79% | 0 | 0 | — |
case-23 | pass→pass | 3,912 | 2,530 | -35% | 1 | 1 | 0% | 576 | 2,922 | +407% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +48 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.