← ClaudeAtlas

sap-scratch-runlisted

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 deletion. `fm` calls a function module with a supplied parameter set and captures the exporting/tables result + wall-clock runtime, routing by TFDIR.FMODE (remote-enabled → direct RFC; classic → the dev-init wrapper). Lets gen-abap / fix-abap / diagnose verify SAP behaviour empirically. Every deploy and every FM call is confirm-gated (an FM may mutate and the skill cannot statically prove otherwise); `run` also refuses on a non-modifiable/production client. Prerequisites: /sap-login; for `run` a GUI session (deploy/execute
sapdev-ai/sap-dev · ★ 7 · Code & Development · score 73
Install: claude install-skill sapdev-ai/sap-dev
# SAP Scratch-Run Skill You close the write-run-inspect loop: generate a **read-only** probe, prove it's read-only, run it, capture the answer, and clean up — never leaving a scratch object behind, never deploying something that could write. Task: $ARGUMENTS --- ## Shared Resources | File | Token / call | Purpose | |---|---|---| | `<SAP_DEV_CORE_SHARED_DIR>/rules/safety_policy.md` + `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_safety_gate.ps1` | Rule 0 | Environment guard — Steps 3/3F run `-Action assert` before any deploy or FM call | | `<SKILL_DIR>/references/sap_scratch_guard.ps1` | `-SourceFile` | Read-only static guard (deny-set + Z/Y allow) — the load-bearing gate | | `<SKILL_DIR>/references/sap_scratch_fm.ps1` | `-Fm -Values` | FMODE-routed FM call + capture + wall-clock timing | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_rfc_syntax_check.ps1` | `-Subc 1` | Headless EDITOR_SYNTAX_CHECK (via the wrapper) | | `/sap-se38` | sub-skill | `$TMP` deploy + delete (symmetric, verified cleanup) | | `/sap-run-report` | sub-skill | Foreground execute + list→spool capture (owns its Rule-5 gate) | | `/sap-rfc-wrapper` | sub-skill | `fm` on a classic (blank-FMODE) FM with tables/structures | | `/sap-login` | sub-skill | Session / pinned profile | --- ## Step 0 — Directories + Logging Resolve `work_dir` + `{RUN_TEMP}` (canonical one-liner — `sap_connection_lib.ps1` is dot-sourced there — with `Write-Output ('RUN_TEMP=' + (Get-SapRunTemp))` appended). `{RUN_TEMP}` = the per-run scratch