sap-activate-object
Activates an inactive SAP repository object via SAP GUI Scripting. Routes to the correct transaction by object type: SE38 for…
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)
Claude Code
$ npx -y skills add sapdev-ai/sap-dev --skill sap-cc-triage --agent claude-code
Codex
$ npx skills add sapdev-ai/sap-dev --skill sap-cc-triage -a codex -y
Cursor
$ npx skills add sapdev-ai/sap-dev --skill sap-cc-triage -a cursor -y
Gemini CLI
$ npx skills add sapdev-ai/sap-dev --skill sap-cc-triage -a gemini-cli -y
GitHub Copilot
$ npx skills add sapdev-ai/sap-dev --skill sap-cc-triage -a github-copilot -y
OpenCode
$ npx skills add sapdev-ai/sap-dev --skill sap-cc-triage -a opencode -y
Windsurf
$ npx skills add sapdev-ai/sap-dev --skill sap-cc-triage -a windsurf -y
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.
Activates an inactive SAP repository object via SAP GUI Scripting. Routes to the correct transaction by object type: SE38 for…
Natural-language SAP API discovery over RFC (no GUI): turn a goal like "create a sales order" or "post a goods movement" into a…
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),…
Executes BDC (Batch Data Communication) sessions in SAP via RFC. Reads SHDB recording files from the bdc/ folder, connects via…
Changes the package (TADIR-DEVCLASS) assignment of an SAP repository object via the "Object Directory Entry" dialog (Goto >…
Validates ABAP source (report / program / FM / class / include) before deployment — one skill, dimension-dispatched: naming…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.