Frl Test Coding Standard
FoundationDB/fdb-record-layer
Standards for writing tests in fdb-record-layer. An agent skill from FoundationDB/fdb-record-layer.
Comprehensive ABAP development skill for SAP systems. An agent skill from secondsky/sap-skills.
$ npx skills add secondsky/sap-skills --skill sap-abap -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install secondsky/sap-skills sap-abap --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/secondsky/sap-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/sap-abap/skills/sap-abap .claude/skills/sap-abap && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sap-abap" agent skill from https://github.com/secondsky/sap-skills/tree/main/plugins/sap-abap/skills/sap-abap into .claude/skills/sap-abap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sap-abap", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/secondsky/sap-skills/tree/main/plugins/sap-abap/skills/sap-abapType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add secondsky/sap-skills --skill sap-abap -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install secondsky/sap-skills sap-abap --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/sap-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/sap-abap/skills/sap-abap .agents/skills/sap-abap && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sap-abap" agent skill from https://github.com/secondsky/sap-skills/tree/main/plugins/sap-abap/skills/sap-abap into .agents/skills/sap-abap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sap-abap", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add secondsky/sap-skills --skill sap-abap -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install secondsky/sap-skills sap-abap --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/sap-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/sap-abap/skills/sap-abap .cursor/skills/sap-abap && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sap-abap" agent skill from https://github.com/secondsky/sap-skills/tree/main/plugins/sap-abap/skills/sap-abap into .cursor/skills/sap-abap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sap-abap", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/secondsky/sap-skills.git --path plugins/sap-abap/skills/sap-abap--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add secondsky/sap-skills --skill sap-abap -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install secondsky/sap-skills sap-abap --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/sap-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/sap-abap/skills/sap-abap .gemini/skills/sap-abap && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sap-abap" agent skill from https://github.com/secondsky/sap-skills/tree/main/plugins/sap-abap/skills/sap-abap into .gemini/skills/sap-abap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sap-abap", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install secondsky/sap-skills sap-abapInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add secondsky/sap-skills --skill sap-abap -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/secondsky/sap-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/sap-abap/skills/sap-abap .github/skills/sap-abap && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sap-abap" agent skill from https://github.com/secondsky/sap-skills/tree/main/plugins/sap-abap/skills/sap-abap into .github/skills/sap-abap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sap-abap", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add secondsky/sap-skills --skill sap-abap -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install secondsky/sap-skills sap-abap --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/secondsky/sap-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/sap-abap/skills/sap-abap .opencode/skills/sap-abap && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sap-abap" agent skill from https://github.com/secondsky/sap-skills/tree/main/plugins/sap-abap/skills/sap-abap into .opencode/skills/sap-abap/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sap-abap", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sap-abapComprehensive ABAP development skill for SAP systems. An agent skill from secondsky/sap-skills.
Sap Abap is an agent skill from secondsky/sap-skills. Comprehensive ABAP development skill for SAP systems. Use when writing ABAP code, working with internal tables, structures, ABAP SQL, object-oriented programming, RAP (RESTful Application Programming Model), CDS views, EML statements, ABAP Cloud development, string processing, dynamic programming, RTTI/RTTC, field symbols, data references, exception handling, or ABAP unit testing. Covers both classic ABAP and modern ABAP for Cloud Development patterns.
Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 33 other files, including reference files (for example `README.md`, `agents/openai.yaml` and `references/abap-dictionary.md`).
It sits in Databases, covering SQL, Unit testing and Error handling. It works with SAP and SQL. The repository describes itself as: Production-ready plugins for SAP development with AI coding assistants — BTP, CAP, Fiori, ABAP, HANA, Analytics Cloud, Datasphere, and more. The licence is GPL-3.0.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 652a861. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are abap).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comhelp.sap.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Sap Abap loads about 3.9k tokens when it runs, and up to ~58k if it reads all its reference files. Until then it costs about 116 tokens; SKILL.md has 841 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from secondsky/sap-skills at commit 652a861, republished under its GPL-3.0 licence (© secondsky). 841 words, ~3,922 tokens.
.claude/skills/sap-abap/SKILL.md (or your agent's skills folder). This skill also uses 31 other files; get the full folder from GitHub.Use this skill when writing or reviewing ABAP code, modernizing classic ABAP to ABAP Cloud-compatible patterns, working with RAP or EML, implementing ABAP SQL, designing unit tests, or troubleshooting language/runtime behavior across supported ABAP releases.
This skill covers ABAP syntax from 7.40 SP08 through ABAP Cloud. Features requiring
a higher release are annotated with inline comments in code examples using the format
" [7.xx+] or noted in reference files. The table below summarizes the key version boundaries.
| Feature | 7.40 SP02 | 7.40 SP05 | 7.40 SP08 | 7.50 | 7.51 | 7.52 | 7.54 |
|---|---|---|---|---|---|---|---|
Inline declarations DATA(...) | x | x | x | x | x | x | x |
| Constructor operators (VALUE, NEW, CONV, COND, SWITCH, REF, EXACT, CAST) | x | x | x | x | x | x | x |
Table expressions itab[...] | x | x | x | x | x | x | x |
| String templates | x | x | x | x | x | x | x |
WITH EMPTY KEY | x | x | x | x | x | x | x |
line_exists(), line_index() | x | x | x | x | x | x | x |
ABAP SQL: @ host variables | x | x | x | x | x | x | |
| ABAP SQL: comma-separated lists | x | x | x | x | x | x | |
| ABAP SQL: SQL expressions in SELECT | x | x | x | x | x | x | |
CORRESPONDING operator | x | x | x | x | x | x | |
Table comprehensions (FOR) | x | x | x | x | x | x | |
LET expressions | x | x | x | x | x | x | |
REDUCE operator | x | x | x | x | x | ||
FILTER operator | x | x | x | x | x | ||
BASE addition | x | x | x | x | x | ||
LOOP AT ... GROUP BY | x | x | x | x | x | ||
ABAP SQL: dbtab~* in SELECT | x | x | x | x | x | ||
ABAP SQL: RIGHT OUTER JOIN | x | x | x | x | x | x | |
| CDS views with parameters | x | x | x | x | x | ||
FINAL(...) inline declaration | x | x | x | x | |||
Host expressions @( expr ) | x | x | x | x | |||
UNION in SELECT | x | x | x | x | |||
IS INSTANCE OF / CASE TYPE OF | x | x | x | x | |||
int8 type | x | x | x | x | |||
| CDS table functions | x | x | x | x | |||
| CDS access control (implicit) | x | x | x | x | |||
$session.user/client/system_language | x | x | x | x | |||
Test seams (TEST-SEAM) | x | x | x | x | |||
Common Table Expressions (WITH) | x | x | x | ||||
OFFSET in SELECT | x | x | x | ||||
UPPER/LOWER in CDS | x | x | x | ||||
| Enumerated types | x | x | x | ||||
Internal tables as data source FROM @itab | x | x | |||||
WITH PRIVILEGED ACCESS | x | x | |||||
utclong type and functions | x |
On a 7.40 system: Replace any FINAL(...) with DATA(...), and avoid 7.50+ features
marked in bold above. Most modern ABAP syntax (VALUE, NEW, CONV, inline declarations,
table expressions, REDUCE, FILTER, GROUP BY) is available since 7.40 SP08.
" Elementary types
DATA num TYPE i VALUE 123.
DATA txt TYPE string VALUE `Hello`.
DATA flag TYPE abap_bool VALUE abap_true.
" Inline declarations
DATA(result) = some_method( ).
FINAL(immutable) = `constant value`. " [7.50+] Use DATA(...) on 7.40
" Structures
DATA: BEGIN OF struc,
id TYPE i,
name TYPE string,
END OF struc.
" Internal tables
DATA itab TYPE TABLE OF string WITH EMPTY KEY.
DATA sorted_tab TYPE SORTED TABLE OF struct WITH UNIQUE KEY id.
DATA hashed_tab TYPE HASHED TABLE OF struct WITH UNIQUE KEY id." Create with VALUE
itab = VALUE #( ( col1 = 1 col2 = `a` )
( col1 = 2 col2 = `b` ) ).
" Read operations
DATA(line) = itab[ 1 ]. " By index
DATA(line2) = itab[ col1 = 1 ]. " By key
READ TABLE itab INTO wa INDEX 1.
READ TABLE itab ASSIGNING FIELD-SYMBOL(<fs>) WITH KEY col1 = 1.
" Modify operations
MODIFY TABLE itab FROM VALUE #( col1 = 1 col2 = `updated` ).
itab[ 1 ]-col2 = `changed`.
" Loop processing
LOOP AT itab ASSIGNING FIELD-SYMBOL(<line>).
<line>-col2 = to_upper( <line>-col2 ).
ENDLOOP.
" Delete
DELETE itab WHERE col1 > 5.
DELETE TABLE itab FROM VALUE #( col1 = 1 )." SELECT into table
SELECT * FROM dbtab INTO TABLE @DATA(result_tab). " @ syntax: 7.40 SP05+
" SELECT with conditions
SELECT carrid, connid, fldate " comma syntax: 7.40 SP05+
FROM zdemo_abap_fli
WHERE carrid = 'LH'
INTO TABLE @DATA(flights).
" Aggregate functions
SELECT carrid, COUNT(*) AS cnt, AVG( price ) AS avg_price
FROM zdemo_abap_fli
GROUP BY carrid
INTO TABLE @DATA(stats).
" JOIN operations
SELECT a~carrid, a~connid, b~carrname
FROM zdemo_abap_fli AS a
INNER JOIN zdemo_abap_carr AS b ON a~carrid = b~carrid
INTO TABLE @DATA(joined).
" Modification statements
INSERT dbtab FROM @struc.
UPDATE dbtab FROM @struc.
MODIFY dbtab FROM TABLE @itab.
DELETE FROM dbtab WHERE condition." VALUE - structures and tables
DATA(struc) = VALUE struct_type( comp1 = 1 comp2 = `text` ).
DATA(itab) = VALUE itab_type( ( a = 1 ) ( a = 2 ) ( a = 3 ) ).
" NEW - create instances
DATA(dref) = NEW i( 123 ).
DATA(oref) = NEW zcl_my_class( param = value ).
" CORRESPONDING - structure/table mapping
target = CORRESPONDING #( source ).
target = CORRESPONDING #( source MAPPING target_field = source_field ).
" COND/SWITCH - conditional values
DATA(text) = COND string( WHEN flag = abap_true THEN `Yes` ELSE `No` ).
DATA(result) = SWITCH #( code WHEN 1 THEN `A` WHEN 2 THEN `B` ELSE `X` ).
" CONV - type conversion
DATA(dec) = CONV decfloat34( 1 / 3 ).
" FILTER - table filtering
DATA(filtered) = FILTER #( itab WHERE status = 'A' ).
" REDUCE - aggregation
DATA(sum) = REDUCE i( INIT s = 0 FOR wa IN itab NEXT s = s + wa-amount )." Class definition
CLASS zcl_example DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
METHODS constructor IMPORTING iv_name TYPE string.
METHODS get_name RETURNING VALUE(rv_name) TYPE string.
CLASS-METHODS factory RETURNING VALUE(ro_instance) TYPE REF TO zcl_example.
PRIVATE SECTION.
DATA mv_name TYPE string.
ENDCLASS.
CLASS zcl_example IMPLEMENTATION.
METHOD constructor.
mv_name = iv_name.
ENDMETHOD.
METHOD get_name.
rv_name = mv_name.
ENDMETHOD.
METHOD factory.
ro_instance = NEW #( `Default` ).
ENDMETHOD.
ENDCLASS.
" Interface implementation
CLASS zcl_impl DEFINITION PUBLIC.
PUBLIC SECTION.
INTERFACES zif_my_interface.
ENDCLASS.TRY.
DATA(result) = risky_operation( ).
CATCH cx_sy_zerodivide INTO DATA(exc).
DATA(msg) = exc->get_text( ).
CATCH cx_root INTO DATA(any_exc).
" Handle any exception
CLEANUP.
" Cleanup code
ENDTRY.
" Raising exceptions
RAISE EXCEPTION TYPE zcx_my_exception
EXPORTING textid = zcx_my_exception=>error_occurred.
" With COND/SWITCH
DATA(val) = COND #( WHEN valid THEN result
ELSE THROW zcx_my_exception( ) )." Concatenation
DATA(full) = first && ` ` && last.
txt &&= ` appended`.
" String templates
DATA(msg) = |Name: { name }, Date: { date DATE = ISO }|.
" Functions
DATA(upper) = to_upper( text ).
DATA(len) = strlen( text ).
DATA(found) = find( val = text sub = `search` ).
DATA(replaced) = replace( val = text sub = `old` with = `new` occ = 0 ).
DATA(parts) = segment( val = text index = 2 sep = `,` ).
" FIND/REPLACE statements
FIND ALL OCCURRENCES OF pattern IN text RESULTS DATA(matches).
REPLACE ALL OCCURRENCES OF old IN text WITH new." Field symbols
FIELD-SYMBOLS <fs> TYPE any.
ASSIGN struct-component TO <fs>.
ASSIGN struct-(comp_name) TO <fs>. " Dynamic component
" Data references
DATA dref TYPE REF TO data.
dref = REF #( variable ).
CREATE DATA dref TYPE (type_name).
dref->* = value.
" RTTI - Get type information
DATA(tdo) = cl_abap_typedescr=>describe_by_data( dobj ).
DATA(components) = CAST cl_abap_structdescr( tdo )->components.
" RTTC - Create types dynamically
DATA(elem_type) = cl_abap_elemdescr=>get_string( ).
CREATE DATA dref TYPE HANDLE elem_type.This skill includes 28 comprehensive reference files covering all aspects of ABAP development:
references/skill-reference-guide.md - Complete guide to all reference filesreferences/internal-tables.md - Complete table operationsreferences/abap-sql.md - Comprehensive SQL referencereferences/object-orientation.md - Classes and interfacesreferences/constructor-expressions.md - VALUE, NEW, COND, REDUCEreferences/rap-eml.md - RAP and EML operationsreferences/cds-views.md - CDS view developmentreferences/string-processing.md - String functions and regexreferences/unit-testing.md - ABAP Unit frameworkreferences/performance.md - Optimization techniques" Using VALUE with OPTIONAL
DATA(line) = VALUE #( itab[ key = value ] OPTIONAL ).
" Using VALUE with DEFAULT
DATA(line) = VALUE #( itab[ 1 ] DEFAULT VALUE #( ) ).
" Check before access
IF line_exists( itab[ key = value ] ).
DATA(line) = itab[ key = value ].
ENDIF.DATA(result) = NEW zcl_builder( )
->set_name( `Test` )
->set_value( 123 )
->build( )." Transform table
DATA(transformed) = VALUE itab_type(
FOR wa IN source_itab
( id = wa-id name = to_upper( wa-name ) ) ).
" With WHERE
DATA(filtered) = VALUE itab_type(
FOR wa IN source WHERE ( status = 'A' )
( wa ) ).
" With INDEX INTO
DATA(numbered) = VALUE itab_type(
FOR wa IN source INDEX INTO idx
( line_no = idx data = wa ) )." Use released APIs only
DATA(uuid) = cl_system_uuid=>create_uuid_x16_static( ).
DATA(date) = xco_cp=>sy->date( )->as( xco_cp_time=>format->iso_8601_extended )->value.
DATA(time) = xco_cp=>sy->time( )->as( xco_cp_time=>format->iso_8601_extended )->value.
" Output in cloud (if_oo_adt_classrun)
out->write( result ).
" Avoid: sy-datum, sy-uzeit, DESCRIBE TABLE, WRITE, MOVE...TOWhen targeting ABAP 7.40 systems, replace 7.50+ syntax with these patterns:
" Instead of FINAL (7.50+):
FINAL(value) = `constant`. " 7.50+
DATA(value) = `constant`. " 7.40 compatible
" Instead of host expressions (7.50+):
SELECT * FROM dbtab WHERE col = @( lv_val ). " 7.50+
SELECT * FROM dbtab WHERE col = @lv_val. " 7.40 compatible
" Instead of UNION (7.50+):
SELECT a FROM tab1 UNION SELECT a FROM tab2. " 7.50+
" Use two separate SELECTs on 7.40 and combine in ABAP:
SELECT a FROM tab1 INTO TABLE @DATA(r1).
SELECT a FROM tab2 INTO TABLE @DATA(r2).
DATA(combined) = VALUE itab_type( FOR l1 IN r1 ( l1 )
FOR l2 IN r2 ( l2 ) ).
" Instead of IS INSTANCE OF (7.50+):
IF oref IS INSTANCE OF zcl_my_class. " 7.50+
" 7.40 alternative — use typed CAST with exception handling:
TRY.
DATA(lo) = CAST zcl_my_class( oref ). " 7.40+
CATCH cx_sy_move_cast_error.
" oref is not compatible with zcl_my_class
ENDTRY.
" Instead of CTEs WITH (7.51+):
WITH +cte AS ( SELECT ... ) SELECT ... " 7.51+
" Use subqueries or temporary tables on 7.40Cause: Table expression access to non-existent line
Solution: Use OPTIONAL, DEFAULT, or check with line_exists( )
Cause: Division by zero Solution: Check divisor before operation
Cause: Invalid substring access or array bounds Solution: Validate offset and length before access
Cause: String cannot be converted to number Solution: Validate input format before conversion
Cause: Dereferencing unbound reference
Solution: Check IS BOUND before dereferencing
All content based on SAP official ABAP Cheat Sheets:
© secondsky, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 31 other files (references) in plugins/sap-abap/skills/sap-abap of secondsky/sap-skills.
Open the folder on GitHubat commit 652a861
Sap Abap next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sap Abap this skillsecondsky/sap-skills | 462 | — | ~3.9k | Automated safety check: Pass | GPL-3.0 | |
| Frl Test Coding StandardFoundationDB/fdb-record-layer | 675 | — | ~792 | Automated safety check: Pass | Apache-2.0 | |
| Rust SQL Testshencangsheng/easydb_app | 590 | — | ~1.2k | Automated safety check: Pass | MIT | |
| NpgsqlrestNpgsqlRest/NpgsqlRest | 132 | — | ~7k | Automated safety check: Notes | MIT | |
| Querying Tempotempoxyz/tidx | 107 | — | ~3.1k | Automated safety check: Pass | MIT | |
| DBoracle/skills | 873 | — | ~1.4k | Automated safety check: Pass | UPL-1.0 |
FoundationDB/fdb-record-layer
Standards for writing tests in fdb-record-layer. An agent skill from FoundationDB/fdb-record-layer.
shencangsheng/easydb_app
Enforces unit test requirements for the Rust data-processing modules in src-tauri/src/sql/ (generator.rs, parse.rs) and src-tauri/src/reader/ (excel.rs and other readers).
NpgsqlRest/NpgsqlRest
Build and modify REST APIs with NpgsqlRest — exposing PostgreSQL as HTTP endpoints from two sources (database functions/procedures/tables/views, and plain .sql files), driven by SQL comment…
tempoxyz/tidx
Query indexed Tempo chain data via tidx HTTP API and CLI. An agent skill from tempoxyz/tidx.
oracle/skills
Oracle Database guidance for SQL, PL/SQL, SQLcl, ORDS, Oracle Vector SDK, administration, app development, performance, security, migrations, and agent-safe database workflows.
jeremylongshore/tons-of-skills-marketplace
A skill your agent uses when you need to generate, validate, or deploy stored procedures for PostgreSQL, MySQL, or SQL Server.
secondsky/sap-skills
SAP-RPT-1-OSS local tabular prediction workflows for FI/CO prototype datasets.
secondsky/sap-skills
Secure dependency upgrades with supply chain protection, cooldowns, and staged rollout.
secondsky/sap-skills
SAP dependency security and MCP executable trust policy with secure upgrades, cooldowns, staged rollout, and supply-chain protection.
secondsky/sap-skills
Comprehensive SAP ABAP CDS (Core Data Services) reference for data modeling, view development, and semantic enrichment.
secondsky/sap-skills
Guides development with SAP AI Core and SAP AI Launchpad for enterprise AI/ML workloads on SAP BTP.
secondsky/sap-skills
This skill provides comprehensive guidance for documenting SAP APIs following the SAP API Style Guide standards.
Categories
Comprehensive ABAP development skill for SAP systems. An agent skill from secondsky/sap-skills. Sap Abap is an agent skill from secondsky/sap-skills. Comprehensive ABAP development skill for SAP systems.
Sap Abap fits situations like: writing ABAP code; working with internal tables; object-oriented programming; RAP (RESTful Application Programming Model).
Run `npx skills add secondsky/sap-skills --skill sap-abap -a claude-code`. Or copy the skill folder (plugins/sap-abap/skills/sap-abap in secondsky/sap-skills) into .claude/skills/sap-abap in your project. Claude Code loads it when a task matches its description.
Run `npx skills add secondsky/sap-skills --skill sap-abap -a codex`. Or copy the skill folder (plugins/sap-abap/skills/sap-abap in secondsky/sap-skills) into .agents/skills/sap-abap in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add secondsky/sap-skills --skill sap-abap -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sap-abap, .gemini/skills/sap-abap, .github/skills/sap-abap and .opencode/skills/sap-abap in your project.
SKILL.md names no scripts, command-line tools or credentials: Sap Abap is instructions for the agent only.
SKILL.md names 2 domains. As links in the text: github.com and help.sap.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Sap Abap is published under the GPL-3.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 54k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Sap Abap: Frl Test Coding Standard (FoundationDB/fdb-record-layer, 675 stars), Rust SQL Test (shencangsheng/easydb_app, 590 stars), Npgsqlrest (NpgsqlRest/NpgsqlRest, 132 stars) and Querying Tempo (tempoxyz/tidx, 107 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
secondsky (a GitHub user) maintains it in secondsky/sap-skills, which has 462 GitHub stars. The repository holds 41 skills in this directory. The repository was last updated on October 5, 2026.
Source: secondsky/sap-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.