From ARC-1 — SAP ABAP for Claude
Probes a target SAP system and writes system-info.md with SID, release, components, feature flags, RAP constraints, and ARC-1 lint preset to ground the assistant for coding. Use when bootstrapping context for a new or upgraded SAP system.
How this skill is triggered — by the user, by Claude, or both
Slash command
/arc-1:bootstrap-system-contextThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Ground the assistant in the target SAP system before any coding work. Produces a local `system-info.md` file that captures SID, release, installed components, detected features, RAP-relevant constraints, and ARC-1's active lint preset — so later prompts stop guessing at constraints.
Ground the assistant in the target SAP system before any coding work. Produces a local system-info.md file that captures SID, release, installed components, detected features, RAP-relevant constraints, and ARC-1's active lint preset — so later prompts stop guessing at constraints.
Run this once per session when working against an unfamiliar system, or again after a system upgrade.
| Setting | Default | Rationale |
|---|---|---|
| Output path | ./system-info.md | Sidecar to the project root |
| Overwrite | Yes, if file exists | Fresh probe results are authoritative |
| Probe features | Yes | Feature flags (RAP, UI5, transports) drive downstream decisions |
| Include lint preset | Yes | Cloud vs on-prem lint rules matter for generated code |
| Include RAP constraints snapshot | Yes | Helps RAP skills avoid known 7.5x pitfalls immediately |
No input required. Optionally:
./system-info.md)SAPRead(type="SYSTEM")
Returns: SID, system type (onprem | btp), release, kernel version, current user, client, language.
SAPRead(type="COMPONENTS")
Returns an array of { name, release, description }. Capture at minimum: SAP_BASIS, SAP_UI, SAP_ABA, SAP_GWFND. These set the safe ABAP syntax ceiling and available APIs.
SAPManage(action="probe")
Returns feature flags for: hana, abapGit, rap, amdp, ui5, ui5repo, transport, flp. Each has available (bool), mode, and a message. These drive decisions like "can I generate a RAP stack?" or "is FLP catalog management wired in?"
If the user requested to skip this step, mark features as "not probed" in the output.
Derive a compact RAP constraints block from release + probe + lint context. This is heuristic guidance for skill prompts, not a hard API contract.
Include at minimum:
rap.available, plus whether DDLS/BDEF reads work)preflightBeforeWrite, scaffold_rap_handlers)SAPLint(action="list_rules")
Returns { preset, abapVersion, enabledRules, disabledRules, ... }. The preset (cloud or onprem) reflects the system type detection; abapVersion is the target ABAP dialect (e.g., v754, cloud, standard). Generated code should stay within this dialect.
Create the file at the chosen path. Use exactly this layout:
# System Info: <SID>
_Generated: <ISO timestamp>_ · _Source: ARC-1_
## Identity
| Field | Value |
|---|---|
| SID | <SID> |
| System type | <onprem / btp> |
| Release | <release> |
| Kernel | <kernel> |
| Client | <client> |
| Language | <lang> |
| User | <username> |
## Core Components
| Component | Release | Description |
|---|---|---|
| SAP_BASIS | <release> | <description> |
| SAP_UI | <release> | <description> |
| SAP_ABA | <release> | <description> |
| SAP_GWFND | <release> | <description> |
<additional rows for any other captured components>
## Feature Availability
| Feature | Available | Mode | Note |
|---|---|---|---|
| RAP / CDS | <yes/no> | <auto/on/off> | <message> |
| abapGit | <yes/no> | <auto/on/off> | <message> |
| HANA | <yes/no> | <auto/on/off> | <message> |
| AMDP | <yes/no> | <auto/on/off> | <message> |
| UI5 | <yes/no> | <auto/on/off> | <message> |
| UI5 Repository | <yes/no> | <auto/on/off> | <message> |
| Transports | <yes/no> | <auto/on/off> | <message> |
| FLP | <yes/no> | <auto/on/off> | <message> |
## Lint Configuration
- **Preset**: <cloud / onprem>
- **ABAP dialect**: <abapVersion>
- **Enabled rules**: <count>
- **Disabled rules**: <count>
## RAP Constraints Snapshot
- **RAP endpoint status**: <available / unavailable / not probed>
- **Recommended build mode**: <single-pass / two-pass>
- **TABL admin type guidance**: <syuname+timestampl on on-prem, abp_* on BTP>
- **Known projection BDEF caveat**: <e.g., use `projection;` header only on 7.5x>
- **Known DDLX scope caveat**: <e.g., headerInfo/search/objectmodel placement limits>
- **Lint coverage hint**: <ABAP+DDLS only / broader>
- **RAP helper path**: <`scaffold_rap_handlers` available / use quick-fix fallback>
## Coding Guidance
- Target ABAP dialect: **<abapVersion>** — do not use syntax beyond this level without verifying per object.
- System type is **<onprem / btp>**:
- If `btp`: prefer released APIs (check with `SAPRead(type="API_STATE", ...)`); avoid non-cloud object types (PROG, INCL, FUGR).
- If `onprem`: full type range available; still prefer released APIs for forward compatibility.
- Transports <enabled / disabled>: <if disabled, note that writes stay on `$TMP`>.
- RAP stack <available / not available>: <if not available, skip RAP generation skills>.
After writing the file, report in 3-5 lines:
Do not dump the full file contents into chat — the user can open the file.
| Error | Cause | Fix |
|---|---|---|
SAPRead(type="SYSTEM") fails with auth error | User lacks S_ADT_RES for discovery | Continue without identity block; note in output that SID is unknown |
SAPRead(type="COMPONENTS") empty or 404 | Endpoint unavailable on this system | Note "components endpoint unavailable"; continue with probe + lint |
SAPManage(action="probe") blocked (read-only mode with no write scope) | Safety config | Fall back to SAPManage(action="features") for cached results |
SAPLint(action="list_rules") returns no preset | ARC-1 lint config not yet loaded | Report "lint preset: not configured"; still write the file |
setup-abap-mirror or SAPRead(type="DEVC") for thatgenerate-rap-service-researched — the researcher uses system-info.md to pick the right RAP patternsetup-abap-mirror — the mirror skill references system-info.md in its headermigrate-custom-code — migration checks depend on knowing the target releasenpx claudepluginhub arc-mcp/arc-1 --plugin arc-1Fetches and displays ABAP system information (SID, client, user details) via sapcli. Useful for troubleshooting and confirming connection details.
Views SAP system status snapshot and edits runtime options in .sc4sap/sap.env (connection, blocklist) and HUD usage limits in settings.json. Replaces /sc4sap:hud and /sc4sap:option commands.
Explains ABAP objects with full dependency context via SAPContext and optional ATC code quality analysis. Supports classes, CDS views, behavior definitions (BDEF), reports, and more.