sap-activate-object
Activates an inactive SAP repository object via SAP GUI Scripting. Routes to the correct transaction by object type: SE38 for reports/programs/function- group…
Answers "is SAP Note N implemented, where, and will it clash with our mods?" across every saved /sap-login profile in one read-only RFC pass. For each note x system it reports a download/implementation verdict (CWBNTHEAD + CWBNTCUST), component-level skew (CVERS), and a
$ npx -y skills add sapdev-ai/sap-dev --skill sap-note-status --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/sap-note-statusContext preview
The summary Claude sees to decide when to auto-load this skill.
Answers "is SAP Note N implemented, where, and will it clash with our mods?" across every saved /sap-login profile in one read-only RFC pass. For each note x system it reports a download/implementation verdict (CWBNTHEAD + CWBNTCUST), component-level skew (CVERS), and a
name: sap-note-status description: | Answers "is SAP Note N implemented, where, and will it clash with our mods?" across every saved /sap-login profile in one read-only RFC pass. For each note x system it reports a download/implementation verdict (CWBNTHEAD + CWBNTCUST), component-level skew (CVERS), and a mod-collision check that joins the note's touched repository objects (CWBNTCI -> CWBCIOBJ) against the customer modification/adjustment log (SMODILOG) and object existence (TADIR). Registers CAB/audit-grade evidence. Pure RFC_READ_TABLE (all FMODE=R), so it runs against PRD/QA systems with no dev-init artefacts, no GUI, no Z object. Tri-state honest: a system with no RFC password or unreachable is COULD_NOT_CHECK (never rendered clean); a note absent from CWBNTHEAD is UNKNOWN_NOT_DOWNLOADED (never NOT_IMPLEMENTED -- SP/TCI-delivered fixes are invisible to CWB tables). Note status codes (NTSTATUS/PRSTATUS) have NO DDIC fixed values, so decode comes from a shipped, customer-overridable map with a confidence flag and the raw code always shown. Prerequisites: >=1 saved /sap-login profile with an RFC password; NCo 3.1 (32-bit). Landscape coverage == saved profiles on THIS Windows account (DPAPI CurrentUser). argument-hint: "<NOTE> [<NOTE> ...] [--systems <SID,SID/CLIENT,...|ALL>] [--no-collisions] [--ticket <ID>] [--json]"
You answer a note-implementation question across a whole landscape with ONE read-only RFC fan-out: per-note per-system verdict + component skew + mod-collision, rendered as a matrix and registered as evidence. You never open a GUI, never write, never claim NOT_IMPLEMENTED without evidence.
Task: $ARGUMENTS
---
| File | Token / call | Purpose | |---|---|---| | `<SKILL_DIR>/references/sap_note_status_rfc.ps1` | `-Notes -Systems -OutDir` | The whole backend (multi-profile fan-out, matrix + collisions) | | `<SKILL_DIR>/references/note_status_codes.tsv` | read by backend | Curated NTSTATUS/PRSTATUS decode (confidence-flagged; customer-overridable at `{custom_url}`) | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_connection_lib.ps1` | dot-source | Profile store + `Resolve-SapProfileHint` | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_rfc_lib.ps1` · `sap_dpapi.ps1` | dot-source / call | RFC connect + password decrypt | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_artifact_lib.ps1` · `sap_finding_lib.ps1` | dot-source | Evidence registration + finding/coverage model | | `/sap-login` · `/sap-compare` · `/sap-evidence-pack` | sub-skills | Profile onboarding / cross-system source diff follow-up / evidence collection |
---
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 dir holding the log state file; mint it once here and reuse (re-minting breaks the `-Action end` state-file lookup). Start logging (`sap_log_helper.ps1`, state `{RUN_TEMP}\sap_note_status_run.json`, skill `sap-note-status`). Pure RFC — no GUI, no session attach, no golden-screen baseline.
The backend strips non-digits and zero-pads to NUMC(10). No note given -> hard `ERROR` (`NOTE_INPUT_INVALID`).
`<SID>/<CLIENT>`, `<SID>/<CLIENT>/<USER>`, `last`, `default`, description substring) or `ALL`. Default (omitted) = **every saved profile** (each with a password is queried; each without becomes a COULD_NOT_CHECK row). An unresolvable hint -> hard `ERROR` listing the store.
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass \
-File "<SKILL_DIR>\references\sap_note_status_rfc.ps1" \
-Notes "<n1,n2>" -Systems "<hints|ALL>" [-NoCollisions] -OutDir "{RUN_TEMP}\note_status" -RunId "<run_id>"Per system it prints `SYSTEM: id=.. sid=.. client=.. reachable=YES|NO release=.. comps="C:R:SP;.."`, then per note `NOTE: sid=SID/C note=.. downloaded=.. versions=.. ntstatus=.. prstatus=.. verdict=.. confidence=D|I|U objects=.. mods=.. missing=.. flags=.. coverage=..`, then `STATUS: OK|PARTIAL|ERROR systems=.. reachable=.. notes=..` (exit 0/1/2). It writes `note_status_rows.tsv` + `collisions.tsv` in the OutDir. Exit 2 / STATUS ERROR = no RFC-capable profile or all unreachable — surface and stop.
**Verdicts:** `IMPLEMENTED` · `INCOMPLETE` · `NOT_IMPLEMENTED` (downloaded, not implemented) · `OBSOLETE` · `CANNOT_BE_IMPLEMENTED` · `UNKNOWN_STATUS` (code has no confident decode — raw shown) · `UNKNOWN_NOT_DOWNLOADED` (no CWBNTHEAD row) · `COULD_NOT_CHECK` (unreachable / no password). `confidence` D=documented, I=inferred, U=unknown — surface it; never upgrade an I/U code to a certain claim.
From `note_status_rows.tsv` write:
a legend, and an AI **skew/risk** summary: skew = differing verdict or component level across systems for a note; risk = `MOD_COLLISION` objects (from `collisions.tsv`, listed by name with SMODILOG user/date) and `OBJ_MISSING` objects. Every cell cites the raw status code; INFERRED / UNKNOWN decodes and COULD_NOT_CHECK cells are called out, never smoothed over. Recommend `/sap-compare` on MOD_COLLISION objects as the source-diff follow-up.
SAP development automation skills for AI coding assistants. Windows-only — the skills drive SAP GUI for Windows via GUI Scripting (plus optional RFC via SAP NCo); there is no macOS/Linux path.
Repo: sapdev-ai/sap-dev
Activates an inactive SAP repository object via SAP GUI Scripting. Routes to the correct transaction by object type: SE38 for reports/programs/function- group…
Natural-language SAP API discovery over RFC (no GUI): turn a goal like "create a sales order" or "post a goods movement" into a ranked, trap-annotated,…
Runs the SAP ABAP Test Cockpit (ATC) end-to-end as a quality gate: builds an SCI Object Set scoped to the target object(s), creates an ATC Run Series bound to…
Executes BDC (Batch Data Communication) sessions in SAP via RFC. Reads SHDB recording files from the bdc/ folder, connects via SAP NCo 3.1, calls…
Changes the package (TADIR-DEVCLASS) assignment of an SAP repository object via the "Object Directory Entry" dialog (Goto > Object Directory Entry). Routes by…
Validates ABAP source (report / program / FM / class / include) before deployment — one skill, dimension-dispatched: naming (variable conventions), type (DDIC…