sap-activate-object
Activates an inactive SAP repository object via SAP GUI Scripting. Routes to the correct transaction by object type: SE38 for…
Turn the spec pipeline's structural signals into a transparent, falsifiable effort estimate — no gut feel. `score` reads a spec work folder's `_*.txt` DDIC/process/interface counts and `/sap-docs-check` ambiguity rows, applies published weights, and maps the complexity class to
Claude Code
$ npx -y skills add sapdev-ai/sap-dev --skill sap-docs-estimate --agent claude-code
Codex
$ npx skills add sapdev-ai/sap-dev --skill sap-docs-estimate -a codex -y
Cursor
$ npx skills add sapdev-ai/sap-dev --skill sap-docs-estimate -a cursor -y
Gemini CLI
$ npx skills add sapdev-ai/sap-dev --skill sap-docs-estimate -a gemini-cli -y
GitHub Copilot
$ npx skills add sapdev-ai/sap-dev --skill sap-docs-estimate -a github-copilot -y
OpenCode
$ npx skills add sapdev-ai/sap-dev --skill sap-docs-estimate -a opencode -y
Windsurf
$ npx skills add sapdev-ai/sap-dev --skill sap-docs-estimate -a windsurf -y
name: sap-docs-estimate description: | Turn the spec pipeline's structural signals into a transparent, falsifiable effort estimate — no gut feel. `score` reads a spec work folder's `_*.txt` DDIC/process/interface counts and `/sap-docs-check` ambiguity rows, applies published weights, and maps the complexity class to a WIDE effort band with named drivers and an assumptions register. `--batch` rolls up a portfolio of specs; `--ledger` bands a `/sap-cc-triage` migration wave by (tier x object type). `record-actuals` appends real hours to an append-only ledger so every estimate becomes measurable; `calibrate` (v1.5) tightens the multipliers once enough pairs accrue. Pure-local, read-only, no SAP access in v1 (a `--live-delta` brownfield-credit RFC mode is v2). Every report is labelled UNCALIBRATED so a wide band can never masquerade as a commitment. argument-hint: "<work-folder> [--brief <path>] | --batch <folder-of-folders> | --ledger <findings_triaged.tsv> | record-actuals <estimate-id> --actual <hours> [--phase build|test|total]"
Score effort from the spec pipeline's own structural signals instead of gut feel, and make every estimate falsifiable via an actuals ledger. **Pure-local and read-only** — no SAP access, no TR, no deploys in v1.
Task: $ARGUMENTS
**Anti-anchoring rule (mandatory):** every rendered estimate carries the header `STRUCTURAL BAND — not a quote; calibration=<NONE|n pairs>`. An uncalibrated band is wide by design and must never be presented as a commitment.
---
| File | Token / call | Purpose | |---|---|---| | `<SAP_DEV_CORE_SHARED_DIR>/rules/skill_operating_rules.md` | *(rule)* | Mandatory operating rules — read-only here | | `<SKILL_DIR>/references/sap_docs_estimate.ps1` | `-Folder\|-Batch\|-Ledger …` | Deterministic offline scorer → SIGNAL/SCORE/BAND lines | | `<SKILL_DIR>/references/sap_estimate_ledger.ps1` | `-Action record\|list\|pairs` | Append-only estimate/actuals ledger | | `<SKILL_DIR>/references/estimate_weights.tsv` | weights | Per-signal complexity weights; override `{custom_url}\estimate_weights.tsv` | | `<SKILL_DIR>/references/effort_bands.tsv` | bands | (type×class) + (tier×object) bands + DECLARED uplifts; override `{custom_url}\effort_bands.tsv` | | `<SKILL_DIR>/references/fixtures/` | fixtures | Offline test fixtures (spec_min, spec_max, findings_triaged.tsv) | | `/sap-docs-check` (Skill tool) | *(suggested)* | Suggested when `check_result_*.txt` are missing — improves the ambiguity signal | | `/sap-log-analyze --builds` (Skill tool) | *(v1.5)* | Refresh build KPIs before `calibrate` | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_artifact_lib.ps1` | Step 5 | Artifact index for /sap-evidence-pack |
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'))); Write-Output ('RUN_TEMP=' + (Get-SapRunTemp))"Ledger + calibration live at `{work_dir}\metrics\` (stable cross-run path — NOT `{RUN_TEMP}`). Set `{RUN_TEMP}` = the `RUN_TEMP=` value printed above (`Get-SapRunTemp` mints + creates the per-run scratch dir holding the log state file) — for logging state only; mint it once here and reuse (re-minting breaks the `-Action end` state-file lookup).
powershell -ExecutionPolicy Bypass -File "<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_log_helper.ps1" -Action start -StateFile "{RUN_TEMP}\sap_docs_estimate_run.json" -Skill sap-docs-estimate -ParamsJson "{}"→ **wave banding**; `record-actuals <id> --actual <h>` → **ledger append**.
`EST_CALIBRATION_INSUFFICIENT`, print the honest cold-start message (`need N more actuals`) and STOP. Writing adjusted multipliers ships in v1.5.
continue with the offline score (never block).
List which `_*.txt` / `check_result_*.txt` exist in the folder (the coverage matrix). If `check_result_*` are missing, **suggest** `/sap-docs-check` (do not auto-run) so the ambiguity signal is populated.
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "<SKILL_DIR>\references\sap_docs_estimate.ps1" -Folder "<work-folder>" -WeightsFile "<SKILL_DIR>\references\estimate_weights.tsv" -BandsFile "<SKILL_DIR>\references\effort_bands.tsv" -CustomUrl "{custom_url}"Use `-Batch`/`-Ledger` for those modes. Parse `SIGNAL:` (per-signal count/weight/contrib/ coverage), `SCORE: raw=… class=… covered=c/t program_type=…`, `BAND: … total_low=… total_high=… calibration=…`, and `STATUS:`. A signal with `coverage=COULD_NOT_CHECK` means its input file was absent — the band is widened and confidence drops; **never render it as low complexity**. No scoreable inputs → `EST_INPUT_MISSING`, exit 1, nothing written.
Write `estimate_<doc>.md` + `.tsv` into the work folder (batch: `portfolio_estimate.*` beside the folders; ledger: `wave_estimate.*`). The report leads with the anti-anchoring header, then: build band + total-with-uplift band, complexity class, **named drivers**, the **coverage matrix** (every COULD_NOT_CHECK signal listed), and the **assumptions register** (every DECLARED uplift factor + every missing signal is one row). Append an ESTIMATE row to the ledger:
… sap_estimate_ledger.ps1 -Action record -Id "<estimate-id>" -Kind ESTIMATE -Scope
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.