Skip to content
Development
Skill

/sap-spau-triage

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

From plugin
sap-dev
8123 skills3 agents
Install
$ npx -y skills add sapdev-ai/sap-dev --skill sap-spau-triage --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/sap-spau-triage

Context preview

The summary Claude sees to decide when to auto-load this skill.

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

SKILL.md

sap-spau-triage.SKILL.md
name: sap-spau-triage
description: |
  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 builds the worklist from SMODILOG
  (aggregated per modified object) joined to ADIRACCESS access keys + TADIR packages;
  --deep pulls before/after version source via the SVRS FMs for AI diff commentary; inspect
  is a single-entry dossier. A deterministic offline classifier (rule table R1-R6 via the
  finding lib) fixes class/confidence/coverage BEFORE any LLM prose, so a recommendation
  never depends on model mood, and a reset-candidate is HIGH only with SVRS source-equal
  proof (note evidence is advisory LOW, never a reset on its own). It NEVER executes
  SPAU/SPDD — every recommendation is advisory in v1; a wrong "reset" deletes a customer
  modification, so every reset row cites its evidence and carries "verify in SPAU first".
  Fail-loud tri-state (unreadable versions / missing fields => COULD_NOT_CHECK, never a
  silent classify). No Z objects, no GUI (SPAU's driver diverges by release: SPAU_UI_START
  on 1909 vs RSUMOD04 on ECC6). Prerequisites: pinned RFC profile via /sap-login; NCo 3.1.
argument-hint: "scan [--package=<mask>] [--user=<mask>] [--since=YYYYMMDD] [--max=500] [--deep [--deep-max=25]] | inspect <OBJ_TYPE> <OBJ_NAME> [--deep]"

SAP SPAU/SPDD Triage Skill

You pre-triage the modification-adjustment worklist an upgrade will present in SPAU/SPDD: assemble the machine-readable evidence (modification log, access keys, version directory, note status) over RFC, classify each entry with a deterministic rule table, and write an ADVISORY report. You NEVER execute SPAU/SPDD and never reset a modification.

Task: $ARGUMENTS

The class/confidence/coverage of each entry is computed by `sap_spau_classify.ps1` (deterministic); **you** write the per-entry rationale and (--deep) diff commentary on top.

---

Shared Resources

| File | Token / call | Purpose | |---|---|---| | `<SKILL_DIR>/references/sap_spau_rfc.ps1` | `-Action worklist\|versions\|notes` | RFC backend (SMODILOG/ADIRACCESS/TADIR/SVRS/CWBNT*) | | `<SKILL_DIR>/references/sap_spau_classify.ps1` | `-WorklistTsv -VersionsTsv -NotesTsv -OutFile` | Offline deterministic classifier (R1-R6) | | `<SKILL_DIR>/references/sap_spau_classify.tests.ps1` | offline | R1-R6 fixture corpus (7 cases) | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_object_resolver.ps1` | dot-sourced | Package/type resolution | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_artifact_lib.ps1` | dot-sourced | `Register-SapArtifact` | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_finding_lib.ps1` | dot-sourced | tri-state coverage model | | `/sap-enhancement-advisor` | sub-skill | `route` re-implement candidates (v1.5) | | `/sap-login` | sub-skill | Pinned RFC profile (no GUI session needed) |

---

Step 0 — Resolve Work Directory

powershell -NoProfile -ExecutionPolicy Bypass -Command ". '<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_settings_lib.ps1'; . '<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_connection_lib.ps1'; Write-Output ('WORK_DIR=' + (Get-SapWorkDir)); Write-Output ('RUN_TEMP=' + (Get-SapRunTemp))"

Step 0.5 — Start Logging

powershell -ExecutionPolicy Bypass -File "<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_log_helper.ps1" -Action start -StateFile "{RUN_TEMP}\sap_spau_triage_run.json" -Skill sap-spau-triage -ParamsJson "{}"

---

Step 1 — Parse Arguments

Modes: `scan` (default) | `inspect <OBJ_TYPE> <OBJ_NAME>` | `route` (v1.5 -> hard ERROR "not yet shipped"). Flags: `--package=<mask>`, `--user=<mask>`, `--since=YYYYMMDD`, `--max=<n>` (default 500), `--deep [--deep-max=<n>]` (default 25). No GUI session is required — say so.

Step 2 — RFC Preflight

Needs a pinned RFC profile (`/sap-login`). Read `server_release_marker` to annotate the report (S/4: "new SPAU UI SPAU_UI_START; adjustment-free period applies" vs ECC: "classic RSUMOD04/RSUMOD02 SPAU"). SE95 (`SAPRMOMO`) is the stable manual cross-check tcode on both.

Step 3 — Build the Worklist (scan) / locate the entry (inspect)

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "<SKILL_DIR>\references\sap_spau_rfc.ps1" -Action worklist -PackageMask "<mask>" -UserMask "<mask>" -Since "<YYYYMMDD>" -Max <n> -OutFile "{RUN_TEMP}\spau_worklist_raw.tsv" -SharedDir "<SAP_DEV_CORE_SHARED_DIR>"

Parse `WORKLIST: n=<k> partial=<0|1>`. `n=0` -> report "no adjustment-relevant modifications found" with the filters echoed — a SUCCESS with n=0, never a fabricated entry. `partial=1` -> the `--max` cap was hit; mark the report coverage PARTIAL. `SPAU_WORKLIST_READ_FAILED` (exit 1) -> abort, no partial TSV registered.

Step 4 — Version Evidence (--deep, always for inspect)

For the selected entries (cap `--deep-max`) run `-Action versions -ObjType <t> -ObjName <n> -DeepMax 1 -OutDir "{RUN_TEMP}\versions"`; collect `VERSIONS:` (count, newest) + the `active`/`newest` `.abap` source pair per object. Build a versions TSV (`obj_type`, `obj_name`, `equal_source` Y/N from a normalized-source hash compare, `numbered`) to feed the classifier's R1.

Step 5 — Note Evidence (advisory)

For note-referencing entries run `-Action notes -Notes "<n1,n2,...>"`; every `NOTE:` line carries `semantics=ADVISORY`. Build a notes TSV (`num`, `status`) for the classifier's R2.

Step 6 — Classify (deterministic)

powershell -ExecutionPolicy Bypass -File "<SKILL_DIR>\references\sap_spau_classify.ps1" -WorklistTsv "{RUN_TEMP}\spau_worklist_raw.tsv" -VersionsTsv "{RUN_TEMP}\versions.tsv" -NotesTsv "{RUN_TEMP}\notes.tsv" -OutFil
Read more
Ships withsap-dev

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.

Get the whole plugin

Other skills on sap-dev.