sap-activate-object
Activates an inactive SAP repository object via SAP GUI Scripting. Routes to the correct transaction by object type: SE38 for…
Summarize sap-dev JSONL log files. Aggregates per-skill counts, success/fail rates, p50/p95 duration, top error_class, and recent FAILED runs (with parent_run_id chain). Filters by --since / --skill / --status. With --builds, instead reconstructs generated-ABAP builds from the
Claude Code
$ npx -y skills add sapdev-ai/sap-dev --skill sap-log-analyze --agent claude-code
Codex
$ npx skills add sapdev-ai/sap-dev --skill sap-log-analyze -a codex -y
Cursor
$ npx skills add sapdev-ai/sap-dev --skill sap-log-analyze -a cursor -y
Gemini CLI
$ npx skills add sapdev-ai/sap-dev --skill sap-log-analyze -a gemini-cli -y
GitHub Copilot
$ npx skills add sapdev-ai/sap-dev --skill sap-log-analyze -a github-copilot -y
OpenCode
$ npx skills add sapdev-ai/sap-dev --skill sap-log-analyze -a opencode -y
Windsurf
$ npx skills add sapdev-ai/sap-dev --skill sap-log-analyze -a windsurf -y
name: sap-log-analyze description: Summarize sap-dev JSONL log files. Aggregates per-skill counts, success/fail rates, p50/p95 duration, top error_class, and recent FAILED runs (with parent_run_id chain). Filters by --since / --skill / --status. With --builds, instead reconstructs generated-ABAP builds from the same logs and reports first-pass-yield KPIs (gen/check/syntax/activation/ATC/ABAP-Unit) to a dashboard. Reads log_dir from sap-dev-core/settings.json.
Analyze JSONL log files produced by the shared sap-dev logger (`sap_log_lib.ps1` / `sap_log_lib.vbs`).
| Token / Path | Source | Purpose | |---|---|---| | `<SAP_DEV_CORE_SHARED_DIR>/rules/skill_operating_rules.md` | rule | Mandatory operating rules | | `<SAP_DEV_CORE_SHARED_DIR>/rules/language_independence_rules.md` | rule | GUI-scripting language independence — offline log analysis, but rule applies to skills whose logs this analyzes | | `<SAP_DEV_CORE_SHARED_DIR>` | placeholder | Resolves to `plugins/sap-dev-core/shared/` | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_build_kpi.ps1` | script | Builds-mode aggregator (`--builds`): reconstructs builds from the logs, computes first-pass-yield KPIs, writes `{work_dir}\metrics\{build_kpi.jsonl,dashboard.md}` | | `<SAP_DEV_CORE_SHARED_DIR>/rules/build_metrics.md` | rule | `sapdev.buildkpi/1` schema + KPI definitions + the gate-enrichment contract | | sap-dev-core `settings.json` | `userConfig.work_dir`, `userConfig.log_dir` | Locates log directory |
/sap-log-analyze /sap-log-analyze --since 2026-04-01 /sap-log-analyze --skill sap-se11 /sap-log-analyze --status FAILED /sap-log-analyze --since 2026-04-01 --skill sap-se38 --status FAILED --top 20 /sap-log-analyze --csv C:\sap_dev_work\temp\log_summary.csv /sap-log-analyze --builds /sap-log-analyze --builds --since 2026-06-01
Flags:
one generated-ABAP build per logical generate→check→deploy→ATC→unit-test run and report first-pass-yield KPIs + a dashboard. Honours `--since`. See `<SAP_DEV_CORE_SHARED_DIR>/rules/build_metrics.md`.
**Resolve `work_dir` via the env-aware helper** — do NOT take `work_dir` from a direct `settings.json` read (that ignores the `SAPDEV_AI_WORK_DIR` env var and `userconfig.json`). Use the `WORK_DIR=` value printed by:
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))"The settings note below still applies to the OTHER keys (`log_dir`, …).
**Settings reads/writes follow `shared/rules/settings_lookup.md`** — merge per-key on the `.value` field (env var → `settings.local.json` → `userconfig.json` → `settings.json`); non-per-connection writes go to `userconfig.json`. Read:
If `log_dir` does not exist, report "no logs found" and stop.
Parse the user message for `--builds`, `--since`, `--skill`, `--status`, `--top`, `--csv`. Defaults: `--top 10`, no other filters.
**If `--builds` is present, go to Step 1.5 and skip Steps 2-4** (builds mode is a distinct report — it does not also print the per-skill log summary).
Reconstruct generated-ABAP builds from the same logs and report first-pass-yield KPIs. This is the offline aggregator described in `<SAP_DEV_CORE_SHARED_DIR>/rules/build_metrics.md`; it reads only the logs (no SAP), and its only writes are the derived report under `{work_dir}\metrics\` (`build_kpi.jsonl` + `dashboard.md`) — analogous to `/sap-cc-campaign report`.
powershell -NoProfile -ExecutionPolicy Bypass -File "<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_build_kpi.ps1" -LogDir "<log_dir>" [-Since <YYYY-MM-DD>]
Echo the script's stdout (the `BUILD:` / `METRIC:` / `GROUP:` grammar lines) verbatim, then show the `dashboard.md` path it reports and offer to display the dashboard. If the script prints `INFO: no gate events found`, tell the user no generated-ABAP builds have been logged yet (the KPIs need at least one run of the gate skills — sap-gen-abap / sap-check-abap / sap-se38 / sap-atc / sap-run-abap-unit — since their build-KPI enrichment shipped). Then stop.
Run `<SKILL_DIR>\references\sap_log_analyze.ps1` with the resolved log directory and any filter flags:
& "<SKILL_DIR>\references\sap_log_analyze.ps1" `
-LogDir <log_dir> `
[-Since <YYYY-MM-DD>] `
[-Skill <name>] `
[-Status <code>] `
[-Top <N>] `
[-CsvPath <path>]The script prints four sections to stdout:
1. **Overall** — total records, file count, date range covered, total runs (start records). 2. **Per-skill summary** — table: skill / runs / SUCCESS / FAILED / SKIPPED / EXISTED / ABANDONED / p50_ms / p95_ms. 3. **Top error_class** — table: error_class / count / last_seen / sample skills. 4. **Recent FAILED runs** — table: ts / skill / run_id / parent_run_id / error_class / error_msg (truncated 80 chars).
Echo the script output verbatim to the user.
If `--csv` was supplied, the script writes the per-skill summary to that path. Confirm the path back to the user.
are silently skipped (counted as `bad_
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.