Abap
Check and improve ABAP code quality using abaplint and Clean ABAP principles. Use this skill when users ask to check, lint, validate, review, or analyze ABAP code for syntax errors, clean code compliance, code quality, best practices, or adherence to Clean ABAP guidelines. Also use when users ask to set up abaplint, configure abaplint.json, or run abaplint on their ABAP project. Triggers include requests like "check this ABAP code", "lint my ABAP", "run abaplint", "configure abaplint", "is this clean ABAP", "review my ABAP", or "analyze ABAP code quality".From its SKILL.md
npx -y skills add likweitan/abap-skills --skill abapAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- runs commandsInstructs the agent to run 5 commands, including `abaplint --version` and 4 more.
SKILL.md
4.4 KB, 952 tokens by cl100k_base, as published. Nobody here has run it
ABAP
Check and improve ABAP code quality using two complementary approaches:
- abaplint: Automated static analysis via CLI, checking syntax, types, and configurable rules
- Clean ABAP: Manual review against Clean ABAP style guide principles
Workflow
-
Determine check type based on user request:
- If the user asks to lint, run abaplint, or check syntax: use abaplint
- If the user asks for clean code review, best practices, or code quality: use Clean ABAP review
- If unclear or the user asks for a full check: use both
-
For abaplint checks:
- Verify
abaplintis installed (npx @abaplint/cli --versionorabaplint --version) - If not installed, install with:
npm install @abaplint/cli -g - Check if
abaplint.jsonexists in the project root - If no config exists, help the user create one (see starter configs in
references/abaplint.md) - Run
abaplintin the project root directory - Parse and present findings to the user
- Verify
-
For Clean ABAP reviews:
- Read the ABAP code provided by the user
- Check against Clean ABAP categories: Names, Language, Constants, Variables, Tables, Strings, Booleans, Conditions, Ifs, Classes, Methods, Error Handling, Comments, Formatting, Testing
- Identify violations with specific line references
- Provide actionable recommendations with code examples
- Prioritize issues by impact (critical, major, minor)
abaplint Quick Start
Run in project root:
abaplint
Generate default config (all rules):
abaplint -d > abaplint.json
For detailed abaplint configuration including starter configs for On-Premise, Steampunk/BTP, and HANA compatibility, read references/abaplint.md.
Clean ABAP Check Categories
Names
- Use descriptive names, snakecase, no Hungarian notation (iv, lv*, lt*)
- Nouns for classes, verbs for methods, no noise words
Language
- Prefer OO over procedural, functional over imperative
- Use modern syntax: NEW, inline declarations, table expressions
Constants
- No magic numbers, use ENUM or grouped constants
Variables
- Prefer inline declarations, no chained DATA
Tables
- No DEFAULT KEY, use INSERT INTO TABLE, LINE_EXISTS, WHERE clauses
Strings
- Backticks for literals, pipes for string templates
Booleans
- Use ABAP_BOOL, ABAP_TRUE/ABAP_FALSE, XSDBOOL
Conditions
- Positive conditions, IS NOT over NOT IS, predicative method calls
Ifs
- No empty IF branches, CASE over ELSE IF, nesting depth <= 3
Methods
- Instance over static, RETURNING over EXPORTING, <= 3 parameters, <= 20 lines
Error Handling
- Exceptions over return codes, class-based exceptions, no catching CX_ROOT
Comments
- Explain why not what, " over *, no commented-out code
Formatting
- One statement per line, <= 120 chars, consistent indentation
Testing
- Given-when-then structure, focused assertions, dependency injection
Output Format
Structure analysis results as:
# ABAP Check Results
## abaplint Findings
[abaplint output, grouped by severity]
## Clean ABAP Review
### Summary
- Total Issues: [count]
- Critical: [count] | Major: [count] | Minor: [count]
### Critical Issues
#### [Category] - [Issue Title]
**Location:** Line [X] / Method [name]
**Problem:** [description]
**Recommendation:** [how to fix]
### Major Issues
[Same format]
### Minor Issues
[Same format]
### Positive Observations
- [Things done well]
References
- abaplint config & setup: Read
references/abaplint.mdfor installation, configuration options, and starter configs - Complete Clean ABAP guide: Read
references/CleanABAP.mdfor full style guide with rationale and examples - Quick patterns: Read
references/quick-reference.mdfor condensed good/bad code examples - Review checklist: Read
references/checklist.mdfor systematic review checklist
What ships with it: 4 files
208.4 KB alongside SKILL.md
references/
- abaplint.md4.1 KB
- checklist.md7.4 KB
- CleanABAP.md187.6 KB
- quick-reference.md9.3 KB
Gives 0 of the 12 instructions most quality gates skills give in 952 tokens
Counted across 1,524 of the 2,830 authors here whose files we hold, read 2026-09-06
- Read full output and check exit codein 45 of 1524, across 40 files
- Verify output confirms the claimin 44 of 1524, across 39 files
- Identify the command that proves the claimin 43 of 1524, across 39 files
- Execute the full verification commandin 36 of 1524, across 30 files
- Produce a verification reportin 34 of 1524, across 18 files
- Review git diff changesin 30 of 1524, across 16 files
- Fix build failures immediatelyin 29 of 1524, across 9 files
- Group findings by severityin 28 of 1524
- State claim only with evidencein 27 of 1524, across 22 files
- Verify regression tests with red-green cyclein 26 of 1524, across 22 files
- Run the full test suitein 26 of 1524, across 25 files
- Run test suite with coveragein 25 of 1524, across 10 files
Said here and by no other author read
- Run abaplint for static analysis
- Perform manual review against Clean ABAP principles
- Verify abaplint installation before execution
- Create abaplint configuration if missing
- Identify violations with specific line references
- Provide actionable recommendations with code examples
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.