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…
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)
$ npx -y skills add sapdev-ai/sap-dev --skill sap-cc-triage --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/sap-cc-triageContext preview
The summary Claude sees to decide when to auto-load this skill.
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)
name: sap-cc-triage description: | 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 → UNMATCHED (REVIEW). Run after /sap-cc-analyze, before /sap-cc-remediate. --learn — the knowledge-pack FLYWHEEL (absorbed from the former /sap-cc-learn): learns real ATC message ids from the triaged findings back into the pack's detect_message_ids so future runs leave fewer UNMATCHED (`propose` = read-only, `apply` merges + operator --assign into catalog.tsv). Offline. Prerequisites: classify needs findings_raw.tsv (/sap-cc-analyze); --learn needs findings_triaged.tsv (a prior classify run). argument-hint: "--campaign <id> [--knowledge <dir>] | --learn <propose|apply> --campaign <id> [--knowledge <dir>] [--assign <file>] [--top-unmatched <n>]"
You turn raw ATC readiness findings into a routed remediation plan: every finding gets a **pattern** and **tier**, and every analyzed object gets a rolled-up tier so `/sap-cc-remediate` knows whether it can auto-fix (R1), needs AI help (R2/R3), or needs a human (R4 / unclassified).
With **`--learn`** you run the knowledge-pack **flywheel** instead: learn the real ATC message ids observed in this campaign's triaged findings back into the pack so the *next* campaign matches more and leaves fewer UNMATCHED. That mode (folded in from the former `/sap-cc-learn`) is documented in **"Flywheel mode (`--learn`)"** below.
Task: $ARGUMENTS
---
| File | Token | Purpose | |---|---|---| | `<SAP_DEV_CORE_SHARED_DIR>/rules/skill_operating_rules.md` | *(rule)* | Mandatory operating rules. | | `<SAP_DEV_CORE_SHARED_DIR>/rules/settings_lookup.md` | *(rule)* | Settings / `work_dir` resolution. | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_settings_lib.ps1` + `sap_connection_lib.ps1` | *(dot-source)* | `Get-SapWorkDir`. | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_log_helper.ps1` | *(invoke)* | Start/step/end JSONL logging. | | `<SKILL_DIR>/../../shared/knowledge/catalog.tsv` | *(read; `--learn apply` updates)* | The Simplification Knowledge Pack index — the join source (pattern / tier / detect_* / confidence). Classify reads it; `--learn apply` updates its `detect_message_ids`. Customer override at `{custom_url}\knowledge\catalog.tsv`. | | `<SKILL_DIR>/references/sap_cc_triage.ps1` | *(invoke)* | The classifier: joins findings to the catalog, writes `findings_triaged.tsv`, advances state. | | `<SKILL_DIR>/references/sap_cc_learn.ps1` | *(invoke, `--learn`)* | The flywheel engine: `propose` (read-only) / `apply` (updates the pack's `detect_message_ids`). |
Workspace contract (`findings/findings_triaged.tsv` `pattern` column, the TRIAGED state) is defined by `/sap-cc-campaign`; the knowledge-pack join contract is defined in `shared/knowledge/README.md`. This skill **owns** `findings/findings_triaged.tsv`.
> Offline skill — no SAP GUI / broker / attach / RFC / TR. It reads the > per-campaign findings + the plugin-shared knowledge pack and writes files.
---
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 ('CUSTOM_URL=' + (Get-SapSettingValue 'custom_url' ((Get-SapWorkDir) + '\custom')))"Set `{WORK_TEMP}` = `{work_dir}\temp` (create if needed) and `{CAMPAIGN_DIR}` = `{work_dir}\migrations\{campaign-id}`.
Set `{RUN_TEMP}` = the per-run scratch dir (`Get-SapRunTemp` mints + creates `{work_dir}\temp\run_<id>`):
powershell -NoProfile -ExecutionPolicy Bypass -Command ". '<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_connection_lib.ps1'; Write-Output ('RUN_TEMP=' + (Get-SapRunTemp))"Per the CLAUDE.md "Two-bucket temp model" write this skill's per-run scratch (the log state file below) under `{RUN_TEMP}`, never at a fixed name under the `{WORK_TEMP}` root.
**Knowledge pack resolution:** default is the plugin pack at `<SKILL_DIR>\..\..\shared\knowledge`. If `{custom_url}\knowledge\catalog.tsv` exists, pass that folder via `--knowledge` to use the customer's extended pack.
---
State file: `{RUN_TEMP}\sap_cc_triage_run.json`. Best-effort.
powershell -ExecutionPolicy Bypass -File "<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_log_helper.ps1" -Action start -StateFile "{RUN_TEMP}\sap_cc_triage_run.json" -Skill sap-cc-triage -ParamsJson "{}"---
**Mode dispatch.** If `--learn <propose|apply>` is present, skip the classify steps (2–4) and jump to **"Flywheel mode (`--learn`)"** below. Otherwise run the default CLASSIFY flow (Steps 2–4).
CLASSIFY inputs:
(from `/sap-cc-analyze`). If missing, stop and run analyze first.
pack; or `{custom_url}\knowledge`).
---
powershell -ExecutionPolicy Bypass -File "<SKILL_DIR>\references\sap_cc_triage.ps1" -CampaignDir "{CAMPAIGN_DIR}"Add `-KnowledgeDir "{custom_url}\knowledge"` to use a customer-extended pack. (Plain `powershell` — offline, no NCo.)
**Join contract** (from `shared/knowledge/README.md`): each finding matches a catalog pattern by **message id**, else **simplification item**, else **code regex** (coarse fallback against the message text); ties prefer `status=ACTIVE`. The chosen pattern sup
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…