secondsky/sap-skills

sapui5-linter

Use this skill when working with the UI5 Linter (@ui5/linter) for static code analysis of SAPUI5/OpenUI5 applications and libraries.

Ver código fuente

Cómo usar

  1. Copia el comando y revisa el paquete antes de instalarlo en tu entorno de agente.
  2. Consulta las herramientas, credenciales y entornos necesarios en el documento original.
  3. Describe las entradas y el resultado deseado; contrasta la salida con las fuentes.
npx skills add https://github.com/secondsky/sap-skills --skill sapui5-linter

Antes de empezar

  • La instalación no incluye suscripción al modelo, cuota API ni permisos sobre tus archivos.
  • Las estrellas e instalaciones reflejan actividad, no una prueba independiente de calidad o seguridad.
Documento original del Skill

Contenido del repositorio de origen con títulos, ejemplos, código, tablas, enlaces e imágenes preservados.

SAPUI5 Linter Skill

Related Skills

  • sap-dependency-security: Use when hardening dependency management for UI5 linting toolchain upgrades and plugin/toolchain lockfile controls

When to Use This Skill

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.

Table of Contents

Overview

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:

  • ✅ Detects 19 categories of issues including deprecated APIs, global usage, and CSP violations
  • ✅ Automatic fixes for common issues (no-globals, no-deprecated-api, manifest properties)
  • ✅ Supports JavaScript, TypeScript, XML, JSON, HTML, and YAML files
  • ✅ Configurable ignore patterns and file targeting
  • ✅ Multiple output formats: stylish, JSON, Markdown, HTML
  • ✅ Fast performance: 1-40s depending on project size

Current Version: 1.22.0 (verified via npm on 2026-06-14) Official Repository: https://github.com/UI5/linter


Quick Start

Prerequisites

Node.js: v20.11.x, v22.0.0, or higher npm: v8.0.0 or higher

Verify prerequisites:

bash
node --version  # Should be v20.11+ or v22+
npm --version   # Should be v8+

Installation

Global Installation (recommended for CLI usage):

bash
npm install --global @ui5/linter

Local Installation (recommended for project integration):

bash
npm install --save-dev @ui5/linter

Verify installation:

bash
ui5lint --version  # Should output: 1.22.0 or higher

Basic Usage

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

Common Workflows

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

Configuration

Configuration File Setup

Create ui5lint.config.{js|mjs|cjs}:

javascript
module.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}"
  ]
};

Common Configuration Patterns

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"
  ]
};

CLI Usage

Essential Commands

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

Linting Rules Overview

Async & Modern Patterns

  • async-component-flags: Validates async component configuration
  • prefer-test-starter: Validates Test Starter implementation

Security

  • csp-unsafe-inline-script: Detects unsafe inline scripts

Event Handlers

  • no-ambiguous-event-handler: Ensures proper event handler notation ✅ Autofix

Deprecation Detection (7 Rules)

  • no-deprecated-api: Detects deprecated APIs ✅
  • no-deprecated-component: Finds deprecated component dependencies
  • no-deprecated-control-renderer: Validates control renderer patterns
  • no-deprecated-library: Checks deprecated libraries in manifest

Global Usage

  • no-globals: Identifies global variable usage ✅ Autofix
  • no-implicit-globals: Detects implicit global access

Error Reporting

  • parsing-error: Reports syntax/parsing errors
  • autofix-error: Reports autofix failures

API Usage

  • ui5-class-declaration: Verifies UI5 class declaration patterns (TypeScript)
  • unsupported-api-usage: Ensures proper API usage

Manifest Modernization (3 Rules)

  • no-outdated-manifest-version: Requires Manifest Version 2
  • no-removed-manifest-property: Identifies incompatible properties ✅ Autofix

Complete rules reference**: See references/rules-complete.md

Integration with Development Workflows

package.json Scripts

json
{
  "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"
  }
}

Common Scenarios

Scenario 1: New UI5 Project Setup

  1. Install linter
  2. Create configuration (use template)
  3. Add npm scripts to package.json
  4. Run initial lint
  5. Fix auto-fixable issues
  6. Review remaining issues

Scenario 2: Preparing for UI5 2.x Migration

  1. Run linter to find all issues
  2. Focus on critical issues first
  3. Apply automatic fixes
  4. Review autofix limitations document
  5. Manually fix unsupported APIs
  6. Address Core API issues (#619, #620)
  7. Update manifest to v2
  8. Fix no-outdated-manifest-version, no-removed-manifest-property issues
  9. Verify all issues resolved

Troubleshooting

Common Issues

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

Known Limitations

  • Cannot convert synchronous to async patterns
  • Limited Core/Configuration API autofix (~50 APIs)
  • jQuery.sap API support limited to basic methods
  • Node.js modules not automatically discovered

Best Practices

1. Run Linter Early and Often

  • Add pre-commit hook for instant feedback
  • See templates/husky-pre-commit.template

2. Use Configuration File for Persistent Settings

  • Environment-specific configurations
  • Project-wide ignore patterns

3. Fix Issues Incrementally

  1. Fix errors first
  2. Then fix warnings
  3. Review and test after each step

4. Document Suppressed Rules

  • Document team-wide suppressions with explanations
  • Use sparingly and with clear justifications

5. Integrate with CI/CD

  • Fail builds on errors, allow warnings
  • Generate reports for stakeholders

6. Monitor Performance

  • Track linting performance over time

Reference Documentation

External Resources

Detailed Documentation

  • Complete Rules Reference: references/rules-complete.md
  • Autofix Capabilities: references/autofix-complete.md
  • Performance Guide: references/performance.md
  • Troubleshooting Guide: references/support-and-community.md
  • Contributing Guide: references/contributing.md

Templates

  • Configuration Template: templates/ui5lint.config.mjs
  • package.json Template: templates/package.json.template
  • Husky Pre-commit: templates/husky-pre-commit.template

Support and Updates

  • Version: 1.22.0 (Current)
  • Release Notes: Available in GitHub releases
  • Roadmap: Documented in GitHub Issues and Discussions
  • Email: security@sap.com
  • Community: Discord #sapui5 channel

Bundled Resources

Reference Documentation

  • references/rules-complete.md - Complete reference for all 19 linting rules
  • references/autofix-complete.md - Detailed autofix capabilities and limitations
  • references/performance.md - Performance optimization guide
  • references/support-and-community.md - Support channels and community resources
  • references/contributing.md - Contributing guidelines

Templates

  • templates/ui5lint.config.mjs - Configuration template
  • templates/package.json.template - Package.json template
  • templates/husky-pre-commit.template - Pre-commit hook template

Last Updated: 2026-06-14 | Version: 2.4.1 Previous Restructure Version: 1.0.1 | Lines Reduced: 376 (from 827) Next Review: 2026-02-25

Relacionados por tarea

del mismo repositorio

Más Skills

Todos los Skills
secondsky
Comunidad

sap-fiori-tools

Develops SAP Fiori applications using SAP Fiori tools extensions for VS Code and SAP Business Application Studio. Use when: generating Fiori Elements or Freestyle SAPUI5 applications, configuring Page Editor for List Report or Object Page, working with annotations and Service Modeler, setting up deployment to ABAP or Cloud Foundry, creating adaptation projects, using Guided Development, previewing with mock data or live data, configuring SAP Fiori launchpad, or using AI-powered generation with P

instalaciones
1
GitHub Stars
462
Actualizado
5 oct
secondsky
Comunidad

dependency-upgrade

Secure dependency upgrades with supply chain protection, cooldowns, and staged rollout. Use when upgrading deps, configuring security policies, or preventing supply chain attacks.

instalaciones
1
GitHub Stars
458
Actualizado
28 sept
secondsky
Comunidad

sap-ai-core

Guides development with SAP AI Core and SAP AI Launchpad for enterprise AI/ML workloads on SAP BTP. Use when: deploying generative AI models, building orchestration workflows with templating/filtering/grounding, implementing RAG with vector databases, managing ML training pipelines with Argo Workflows, configuring content filtering and data masking for PII protection, using the Generative AI Hub for prompt experimentation, managing prompt templates via the Prompt Registry, or integrating AI capa

instalaciones
1
GitHub Stars
458
Actualizado
28 sept
secondsky
Comunidad

sap-btp-cloud-transport-management

Comprehensive skill for SAP Cloud Transport Management service on SAP BTP. Use when setting up transport landscapes, configuring transport nodes and routes, managing import queues, deploying MTAs across Cloud Foundry environments, integrating with CI/CD pipelines, configuring ABAP environment transports, troubleshooting deployment errors, or implementing change management workflows. Covers entitlements, subscriptions, role collections, service instances, destinations, and API integrations.

instalaciones
1
GitHub Stars
458
Actualizado
28 sept