
Claude Skills by sapdev-ai
github.com/sapdev-aiMakes the suite see SAP forms: SmartForms, SAPscript, and Adobe forms — inventory them with real usage evidence, read a 40-node form as a navigable tree/spec, and feed /sap-cc-* scope decisions with counts instead of anecdotes. inventory enumerates all three form families (STXFADM SmartForms, TADIR SAPscript/Adobe) with namespace/package filters, overlays the TNAPR output-determination assignment (output types, channels, driver program, routine) and NAST usage counts in a date window -> forms...
Install-free, read-only git backend for custom ABAP: gives Z code the PR-style review, blame, readable TR diffs, and whole-package-on-disk that abapGit would — without installing abapGit (often politically impossible on customer systems) and without ever writing to SAP. snapshot serializes a PACKAGE / TR / object-list scope to an abapGit-ISH tree over proven RFC reads and commits it to a local git repo with the TRs currently referencing the scope annotated in the message; diff re-serializes a...
Inspects the currently active SAP GUI session — structurally and/or visually — so a stuck GUI script (unexpected popup, a control ID that moved between releases, a greyed-out field, a hung transition) can be understood. Two mode families: STRUCTURAL dumps component IDs + properties — `tree` (component tree of all/one window), `menu` (menu bar), `type` (every component of a type, e.g. GuiButton/GuiShell), `id` (full property dump of one findById path), `wnd` (one window); VISUAL `screenshot` H...
Pre-change / pre-release impact analysis — answers "if I change this object, what else might break?" from SAP's system-maintained cross-reference index (not by parsing source, which is blocked, nor by driving the slow GUI where-used). Resolves the object, then gathers reverse dependencies (where-used), forward dependencies (what it uses), runtime entry points (tcodes, jobs, variants, RFC-enabled flag), and transport history. Computes a transparent LOW/MEDIUM/HIGH risk band from where-used fan...
Manages ABAP background jobs on a live SAP system — schedule, list, status, log, spool, cancel, delete. Mode-aware: prefers the RFC fast-path (schedule via the RFC-enabled Z_RUN_REPORT; list/status via TBTCO; spool id via TBTCP; delete via BP_JOB_DELETE) and falls through to GUI (SM36 schedule / SM37 operations) when RFC is unavailable, honouring userConfig.sap_dev_mode. Scheduling a report EXECUTES it (possibly recurring), and cancel/delete are destructive — the skill ALWAYS confirms those b...
Reaches non-RFC-callable ABAP code from outside the system (e.g. SAP NCo 3.1), in two modes: `fm` CALLS a non-RFC-enabled function module via the generic wrapper Z_GENERIC_RFC_WRAPPER_TBL (reads the FM interface, builds asXML, invokes it over RFC, returns the deserialized outputs); `class` GENERATES + deploys a dedicated RFC wrapper FM for a non-RFC-callable class method (reads the method interface, emits Z_CLSWRP_<CLASS>_<METHOD>, deploys via /sap-se37). The modes compose: `class` builds a w...
Executes ABAP Unit tests on a deployed object (program or global class) via SAP GUI Scripting and reports per-method pass / fail with a verdict gate. Opens the object in SE38 / SE24, triggers the ABAP Unit run (via the SE38/SE24 menu), and parses the result display. Closes the generate -> deploy -> activate -> TEST loop for /sap-gen-abap output (Z<PROGRAM_ID>_TEST) and works standalone on any brownfield object. GUI backend, verified on S/4HANA 1909. Results-only by default; with --with-covera...
Executes an ABAP report/program on a live SAP system and captures the output — foreground (SA38 F8, interactive list) or background (scheduled job), with or without a variant, or ad-hoc selection values. Also maintains variants — create/overwrite (set) and delete via the SAPLSVAR GUI dialogs, list/show via RFC. Mode-aware: prefers the RFC fast-path where present and falls through to GUI (SA38 F8 / Execute-in-Background) when RFC is unavailable, honouring userConfig.sap_dev_mode. Executing a r...
A guarded write-run-inspect REPL for SAP so the AI can empirically OBSERVE what the system does instead of guessing (the ABAP debugger is unreachable via GUI Scripting). `run` turns a question into a tiny read-only $TMP probe report, statically guards it (a hard REFUSE on any write / COMMIT / CALL TRANSACTION / SUBMIT / dynamic-write / file / lock construct), syntax- checks it headlessly, deploys it ($TMP, no transport), executes and captures the list, then auto-deletes it and verifies the de...
SE14 (DB Utility) for stuck DDIC tables — closes the gap /sap-se11 names but never implemented. check is a read-only RFC snapshot of DDIC-vs-DB consistency (DD02L active row + pending version, DWINACTIV inactive worklist, TBATG open conversion/DB-utility request with its state, DBDIFF DDIC/DB diff, QCM<T>/QCM8<T> shadow table, DDPRH log header) -> verdict CONSISTENT / ADJUST_NEEDED / CONVERSION_RUNNING / CONVERSION_TERMINATED / NOT_FOUND; it is safe to auto-chain after a failed table activati...
Lists and safely releases SAP enqueue locks (transaction SM12) over RFC — no GUI. Two modes. `list` (read-only) dumps current lock entries via ENQUEUE_READ with a computed lock AGE and a best-effort owner-liveness column, filterable by user / table / lock argument / client / age. `release` (destructive, gated) releases a stale lock ONLY after proving the owner has no session on ANY application server (a liveness gate that reads TH_SERVER_LIST + TH_USER_LIST, and TH_SYSTEMWIDE_USER_LIST on mul...
Runs ONE governed, read-only database JOIN/aggregate over RFC and returns a TSV with provenance — closing the gap that SE16N and RFC_READ_TABLE (single-table only) leave, so "VBAK joined to VBAP where…", "open orders by plant with credit block" stop decaying into several exports + manual Excel matching. Natural-language mode resolves NL → DDIC tables/fields via live DD02T/DD03 reads (never guessed) and shows the generated SQL with a name→description provenance table before executing. Two engi...
/sap-diagnose reader: ABAP runtime-error (short dump) evidence from ST22 in GUI mode (ADT not used; SNAP is a cluster table, so dumps are read by driving ST22 via SAP GUI Scripting). Read-only: sets the date/user selection, displays the dump list, and scrapes it into the shared diagnose evidence contract. With --deep it also opens each in-scope dump and scrapes the failing source line + snippet into the event's include/line + a dump_detail object (what /sap-fix-incident consumes to root-cause...
Moves a released transport request through the landscape (DEV → QAS → PRD) and reads its import status / return code via STMS. Four modes: status (default, READ-ONLY — a target's import queue, or where a TR sits on the route); logs (READ-ONLY — import log + step RC mapped to OK / WARN / ERROR / FATAL); import (WRITE, gated — import one released TR; a PRODUCTION target needs a typed-SID echo + second confirmation, the most outward-facing action in the toolset; never imports an unreleased/NO-GO...
Analyzes an already-recorded SAP performance trace and ranks the hotspots. Two sources: --import <file> reads a trace you exported yourself (fully offline, no SAP needed); --source st05|sat drives the GUI to display the latest recorded SQL trace (ST05, "Summarized SQL Statements") or runtime- analysis hit list (SAT) and exports it as a tab file. The analyzer normalizes either shape into a ranked hotspot list, flags anti-patterns (SELECT in loop, SELECT *, full-scan, unguarded FOR ALL ENTRIES,...
Release gate for an ABAP transport request — answers "is this transport safe to release?" before it moves to QA / production. Resolves the TR (explicit number, or --current from the dev defaults), builds its object inventory from E071, and runs read-only RFC structural checks: unreleased child tasks, inactive objects, local / $TMP objects inside a transportable request, and a multi-package note. Optionally chains /sap-atc and /sap-run-abap-unit and folds their verdicts in. Gates every finding...
Reads the SAP version store over RFC (no GUI) to answer "who changed this program/FM, when, and what exactly changed" — the same-system TIME axis that complements /sap-compare's cross-system axis. Three read-only modes: `list` (version directory via SVRS_GET_VERSION_DIRECTORY_46 with a TR-status join — author, date, transport, released-flag, last-released), `diff` (unified line diff of any two stored versions, or the newest pair by default, with an AI change annotation), and `blame` (per-line...
Diagnose SD condition-technique VOFM routines (pricing requirements + condition base/value formulas) — the notorious trap where a routine is registered but the generated include was never wired in by RV80HGEN, or the include+registry don't travel together in a transport, and you burn hours on "routine not found at runtime". `list <type>` enumerates a routine group from TFRM joined to PROGDIR existence/active state + frame-include membership; `check <type> <nnn>` proves one routine end-to-end ...
Validates an extracted design spec before ABAP code generation, across two dimensions: `ddic` checks DDIC objects (domains / data elements / tables) — naming, data-type validity, domain/DTEL/table cross-references, currency-ref completeness, the primitive-as-data-element trap; `process` checks the process-logic text for unclear/ambiguous steps, missing info, and logic / type / cross-reference inconsistencies. Both optionally verify references against the live system over RFC when a SAP logon ...
Turn the spec pipeline's structural signals into a transparent, falsifiable effort estimate — no gut feel. `score` reads a spec work folder's `_*.txt` DDIC/process/interface counts and `/sap-docs-check` ambiguity rows, applies published weights, and maps the complexity class to a WIDE effort band with named drivers and an assumptions register. `--batch` rolls up a portfolio of specs; `--ledger` bands a `/sap-cc-triage` migration wave by (tier x object type). `record-actuals` appends real hour...
Generates ABAP Unit tests for an EXISTING object (global class / function module / report) and closes the loop on a live system: pre-check the generated test, deploy, activate, run with coverage, read failures, fix, repeat until green (bounded). Reads the active source, builds a call/data map, and runs a SEAM ANALYSIS that classifies every DB read and external call into a doubling strategy (OSQL test double for SELECTs, ABAP test double for injected dependencies, or flags untestable-without-r...
Generates an ABAP CDS view (Core Data Services) from a spec or a natural-language description and deploys it to a live SAP system WITHOUT ADT — via the RFC-enabled installer FM Z_CDS_DDL_INSTALL (which hosts CL_DD_DDL_HANDLER_FACTORY). Emits classic DDL (DEFINE VIEW with @AbapCatalog.sqlViewName) on SAP_BASIS 7.50-7.54, and can emit view entities (DEFINE VIEW ENTITY) on 7.55+. Creates the DDL source (DDLS), registers its TADIR entry under a package, activates it (generating the SQL view for c...
Generates a CORRECT inbound IDoc processing function module from two machine-readable inputs — the IDoc type's segment metadata (IDOCTYPE_READ_COMPLETE) and a field-mapping spec — plus a golden template that encodes the trap-rich protocol once: the fixed EDIDC/EDIDD/BDIDOCSTAT/BDWFRETVAR signature WE57 demands, the per-DOCNUM packet loop (the classic mass-processing junior trap), typed segment decode, the 53(ok)/51(error) status-record-per-IDoc protocol, RETURN_VARIABLES, and BAL application-...
Generate a complete, mutually-consistent managed-RAP business object file set from a base table — the biggest capability gap for on-prem clean-core dev without ADT. `generate` renders the root CDS + projection CDS + two behavior definitions + behavior pool + service definition + service-binding spec + MANUAL_STEPS.md (field list/keys resolved live via DDIF_FIELDINFO_GET; dialect-forked 7.54 classic vs 7.55+ view-entity); `package` builds an abapGit-layout zip so ZABAPGIT_STANDALONE imports it...
Turns a design-spec work folder (_process.txt / _golden.txt / _errorMsgs.txt from /sap-docs-extract) or an /sap-explain-object dossier into a reviewer-ready FUNCTIONAL test plan — cases per process step, exactly one negative case per validation rule wired to its error message, boundary cases per selection field, and a case<->step<->rule<->message traceability matrix — closing the gap where the spec's Golden Tests sheet feeds ONLY ABAP Unit generation and nobody derives the functional plan, so...
AI semantic + security code review for an EXISTING ABAP object or a local .abap file. Reads the active source, builds a structure + call/data map, then reasons over the code across a fixed dimension checklist — security (dynamic-SQL injection, missing/wrong AUTHORITY-CHECK, client handling), correctness (unchecked SY-SUBRC, READ TABLE guards), performance (SELECT-in-LOOP, nested loops, SELECT *), robustness/LUW (unhandled exceptions, COMMIT in loop), and maintainability. This is the SEMANTIC ...
Runs the S/4HANA-readiness ATC over a migration campaign's REMEDIATE objects and captures per-finding results into findings/findings_raw.tsv, advancing each object to ANALYZED. The ATC run is delegated to /sap-atc --variant=S4HANA_READINESS (so this skill ships no new GUI scripting; /sap-atc fails loud if that variant can't be located on the release, so a non-readiness run is never passed off as readiness). Two actions: `prepare` builds the worklist from scope.tsv; `ingest` parses ATC result ...
Owns the S/4HANA custom-code migration campaign workspace and is the orchestration entry point for the sap-migrate engine. Five subcommands: init — create a campaign workspace from the migration Customer Brief (source/target release, in-scope packages, decommission policy, connection profiles, human gates) + the empty state ledger. status — per-state / per-tier counts + headline metrics. report — render reports/dashboard.md: state/tier/pattern rollup + five KPIs (decommission savings, ATC-c...
Measures each custom (Z/Y) object's DISTANCE FROM ABAP CLOUD — the question S4HANA_READINESS (/sap-cc-analyze) does not answer. `scan` downloads source over RFC for a campaign's REMEDIATE scope (or an explicit --objects/--packages set), matches a versioned forbidden-statement ruleset + a cloudification-repository snapshot offline, and classifies every object TIER_1_READY / TIER_2_WRAPPABLE (only blockers are unreleased APIs with a successor) / TIER_3_CLASSIC (a forbidden statement or an unrel...
EXECUTES the retirement of unused custom objects a campaign flagged for decommission — turning "40-60% of custom code is unused" into a realized, audited deletion. /sap-cc-usage only FLAGS; this skill physically deletes, behind a hard signed gate and a per-object safety chain. Two actions: `plan` (behind the decommission_signoff gate — build the retirement worklist from scope.tsv, consumers before providers; nothing deleted) and `record` (after the delegated deletes, advance state + append th...
Enumerates and classifies the custom (Z/Y / customer-namespace) repository objects in scope for an S/4HANA migration campaign. Reads TADIR + TRDIR over read-only RFC against the campaign's SOURCE system, writes inventory.tsv, and upserts every object into the state ledger as INVENTORIED (never touching objects further along, so it is safe to re-run as new custom code appears). No SAP GUI, no writes, no TR — pure read-only. First SAP-touching step of the sap-migrate pipeline; run after /sap-cc...
Remediates a migration campaign's TRIAGED R1 (mechanical) objects on the SANDBOX — the only sap-migrate skill that changes SAP, and only after a mandatory dry-run review. Four actions: apply — dry-run the deterministic R1 rule pack over each object's source → <obj>.after.abap + diff for the operator to review (this is the gate). assist — R2/R3: assemble a per-object AI context bundle for a recipe-faithful rewrite (never auto-applied; DRAFT patterns advisory-only). revert — roll a deployed fi...
Two modes for an S/4HANA migration campaign's readiness findings. Default — CLASSIFY: joins findings/findings_raw.tsv against the Simplification Knowledge Pack (catalog.tsv) and writes findings/findings_triaged.tsv with each finding's pattern + tier (R1 mechanical … R4 redesign) + fixability, then advances each object to TRIAGED with a rolled-up tier (routing R1 to auto-remediation, R2+/unclassified to AI/manual). Match precedence: message id > simplification item > code regex; no match → UNM...
Overlays runtime usage data onto the campaign inventory to decide what to remediate vs. retire — the step that produces the headline "X% retired without remediation" number. Joins a usage export onto inventory.tsv, applies the decommission policy, writes usage.tsv + scope.tsv (REMEDIATE / DECOMMISSION / REVIEW). Usage sources: FILE (hand-supplied export), SCMON/UPL (RFC read of the ABAP Call Monitor / SUSG), WORKLOAD (coarse ST03N fallback, positive-only, low-confidence), NONE. FILE/NONE are ...
Accelerates the canonical clean-core chore of replacing a classic CMOD function exit with a BAdI implementation — a human-in-the-loop pipeline (analyze -> translate -> deploy -> verify) that does the tedious reads and the genuinely hard AI translation while NEVER auto-deactivating the old CMOD project. analyze (RFC, read-only) resolves the exit's identity (MODSAP/MODACT/MODATTR/ENLFDIR), reads its source + ZX include, checks whether a containing CMOD project is active, gets ranked replacement...
Pre-assembles the SPDD/SPAU modification-adjustment worklist for an upgrade or S/4 conversion and produces an ADVISORY classification per entry (adopt / reset-candidate / re-implement / unclear) with cited evidence, confidence, and effort band — so the upgrade team walks into the weekend with a triaged list instead of a blank SPAU tree, and the single biggest schedule risk (deciding reset-vs-adopt per entry under time pressure) is front-loaded. Read-only, pure RFC (NCo 3.1, 32-bit): scan buil...
Diagnoses "no authorization" failures deterministically over RFC and proposes the exact PFCG fix — no more pasting an SU53 screenshot and hand-searching SUIM. Given the failed authorization object (+ optional field values, read off SU53 / an ST22 dump / an application-log message), it evaluates the target user against the AUTHORITATIVE runtime user buffer (`SUSR_USER_AUTH_FOR_OBJ_GET`, remote-enabled on S/4HANA 1909 + ECC 6) with faithful AUTHORITY-CHECK semantics — one authorization instance...
Derives the SAP authorization requirements a custom development actually needs — the deliverable Z-transactions never hand the security team. derive reads a program/FM source over RFC, extracts the EXPLICIT AUTHORITY-CHECK surface plus the IMPLICIT one (CALL TRANSACTION -> S_TCODE, SUBMIT -> S_PROGRAM, OPEN/DELETE DATASET/TRANSFER -> S_DATASET, CALL FUNCTION DESTINATION -> S_RFC, DDIC table writes -> S_TABU_DIS incl. dynamic MODIFY (var)), traces each value to its nearest literal, and validat...
Answers "who changed this object / this data, and when" headlessly over RFC — no more hand-joining CDHDR/CDPOS in SE16N and decoding cluster rows by eye. Resolves a business token (PO, customer, vendor, material, sales order, G/L account, cost center …) to its change-document class, scans CDHDR for the change headers, then pulls the fully DECODED field-level rows (table · field · old → new, with DDIC field labels) via CHANGEDOCUMENT_READ through the dev-init RFC wrapper — which sidesteps both...
Keyed, row-level RFC diff of ONE customizing table or view across two saved connection profiles (or two clients of one system) — the shareable answer to "it works in QAS but not in DEV/PRD". Resolves the object on both sides, computes the compared-field set (drops the technical client key for client-dependent tables, excludes unreadable/too-wide columns honestly), guards against an unbounded read, does a chunked offset-based read of each side, and runs the ONE shared keyed-diff engine to clas...
Turn a 200-step cutover Excel into a crash-safe, evidence-stamped tracker — the cutover lead stops doing 3am bookkeeping and answers "are we on the critical path?" instantly. `init` parses the runbook into a draft ledger behind a mandatory human-curation gate; `record` stamps start/done/fail events with machine-read RFC evidence (transport import return code from TPALOG, job status from TBTCO, table row counts) — never a screenshot; `report` renders the live board with per-phase progress, blo...
Read-only DB growth + archivability evidence over RFC — the table-growth watch nobody does until the disk is full. `growth` ranks tables by row count (EM_GET_NUMBER_OF_ENTRIES, fast DB-stat counts that work on cluster tables too), diffs against a persisted local snapshot for a rows/day trend, and flags known log-table offenders (BALDAT, EDID4, CDPOS, DBTABLOG) and Z tables that lack housekeeping. `archivability` maps each archiving object to its tables (ARCH_DEF), pulls its run history (ADMI_...
Assembles the weekly delivery status report — objects in build/test/prod, quality-gate posture (RAG), TR pipeline position, and week-over-week progress — by correlating what the suite already produces instead of re-gathering it by hand every Friday. Offline-first: aggregates the artifact index (ATC / check-abap / abap-unit / transport-readiness / impact verdicts), build KPIs, and optional campaign state, adds exactly one live RFC read (E071→E070/E07T) for TR position, and derives a DETERMINIS...
Reconstructs the O2C document chain from a bare business-document number and finds where it stalled — read-only over RFC (no VA03/VL03N/VF03/FB03 hopping). Walks VBFA in both directions from an order/delivery/invoice, decodes every node's status release-aware (S/4 in-table VBAK/LIKP/VBRK vs ECC VBUK), follows the invoice into FI via BKPF/AWKEY, and writes a flow map + "where it stalled" narrative. Auto-detects the document category. Doubles as a /sap-diagnose evidence source (the business-doc...
Explains what a PFCG role actually lets a user do — read-only over RFC (no GUI, no PFCG). Extracts the role's menu/granted transactions, decoded authorization values in plain language (auth-object + activity texts, not raw codes), org levels, and holders (with lock/validity), decomposing composite roles one level. A deterministic critical-grant matcher flags dangerous authorizations (table-maintenance change, debug-replace, SE38/SM30/SM49/SU01/PFCG, wildcard transaction/RFC grants, …) against...
Posts FI accounting documents (FB01 G/L, FB60 vendor invoice, FB70 customer invoice) from a tab-delimited definition file via BAPI_ACC_DOCUMENT_* RFCs — for standalone test data or the settlement tail of O2C/P2P scenarios. A mandatory server-side dry-run (BAPI_ACC_DOCUMENT_CHECK) surfaces every posting error (account blocked, period closed, unbalanced, substitution) as structured BAPIRET2 BEFORE anything is committed; then a confirm-gated POST + BAPI_TRANSACTION_COMMIT, verified by an authori...
Answers "why does user U (not) see launchpad content T" and finds broken/dead launchpad references by deterministically cross-joining what the FLP designer, PFCG, and web designers each show only half of: user -> roles (BAPI_USER + AGR_USERS + composite expansion, with validity) -> each role's Fiori menu references (AGR_HIER/AGR_HIERT/AGR_BUFFI: catalog and group providers with their real IDs, OData services, Web Dynpro apps, and classic transaction targets) -> TSTC validation of every transa...
OData/Gateway service diagnosis over RFC — replaces the /IWFND/MAINT_SERVICE + SICF + /IWFND/ERROR_LOG scavenger hunt behind every "the service returns 500" ticket. status reads the hub catalog (/IWFND/I_MED_SRH registration + IS_ACTIVE) x the system-alias assignment (/IWFND/V_MGDEAM) per service and returns a verdict OK / INACTIVE / NO_ALIAS / NOT_REGISTERED — a missing alias is the classic 500 cause. errors surfaces the /IWFND/ERROR_LOG content, clusters it by (service, message), and AI-map...
Golden-master regression testing for SAP report output and table state — answers "does this produce the same output after the change?" as one command instead of a manual before/after Excel diff. capture stores a deterministic baseline (a report's background spool via /sap-run-report + /sap-job + /sap-sp02, or a table dump via /sap-se16n), normalizing away volatile tokens (dates, times, timestamps, the capture user, page headers). verify re-runs the identical variant, normalizes, diffs, and Cl...
The daily morning health sweep as one repeatable, baselined command — read-only over RFC. Runs six probe families (stuck IDocs via EDIDC, tRFC backlog via ARFCSSTATE, qRFC queue depth via the queue monitor FMs, spool finishing-errors via TSP02, aborted jobs via TBTCO, ABAP dumps via SNAP), delegates to /sap-diagnose's sm13/sm12/slg1 readers, and — the genuinely new value — classifies every finding NEW vs known-RECURRING against a persisted per-system baseline, each with a ready-made /sap-diag...