Skip to content
Development
Skill

/sap-cc-triage

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)

From plugin
sap-dev
8123 skills3 agents
Install
$ npx -y skills add sapdev-ai/sap-dev --skill sap-cc-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-cc-triage

Context 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)

SKILL.md

sap-cc-triage.SKILL.md
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>]"

SAP Custom-Code Migration — Triage

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

---

Shared Resources

| 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.

---

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 ('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.

---

Step 0.5 — Start Logging

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 "{}"

---

Step 1 — Pre-flight & mode dispatch

**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:

  • `--campaign <id>` — **required.** Needs `{CAMPAIGN_DIR}\findings\findings_raw.tsv`

(from `/sap-cc-analyze`). If missing, stop and run analyze first.

  • `--knowledge <dir>` — optional knowledge-pack override (default: the plugin

pack; or `{custom_url}\knowledge`).

---

Step 2 — Run the Classifier

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

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.