技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
sap-adt-commands【数据与研究】Executes SAP ABAP Development Tools (ADT) REST operations for object discovery, source management, object creation, activation, testing, transport handling, history, where-used analysis, message classes, and text elements. Use when working with an SAP ABAP system and the required ADT operation is unavailable through the currently configured MCP tools.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Command-line access to SAP ABAP Development Tools (ADT) REST services from an AI agent workflow. The client covers areas that many existing MCP tools do not expose: repository search, object creation, message-class and text-element maintenance, transport lifecycle, and quality checks.
Give the agent a safe, scriptable way to inspect and modify ABAP objects on a target SAP system when no MCP tool covers the operation. Every command returns JSON so results can be routed into subsequent steps.
Activate this skill when the user is working with an SAP ABAP system and any of the following are true:
Do not activate this skill when:
The agent must:
--dest) when it is
available.When faced with a task, decide in this order:
Do not fall through to this client "just in case". Every write here is a real change on the target system.
The client accepts either explicit flags (--url, --user, --pwd,
--client, --lang) or a destination name:
--dest SID_CLIENT_USER_LANG
Generic example:
--dest DEV_100_DEVELOPER_EN
For --dest DEV_100_DEVELOPER_EN, the client resolves:
url from SAP_DEV_URLuser from SAP_DEV_DEVELOPER_USER, else the DEVELOPER part of the
namepwd from SAP_DEV_DEVELOPER_PWD (must exist)client = 100lang = ENThe one-time setup below is performed by the human. The agent may set the URL variable when the URL is not secret, but must never set a password variable itself:
# URL — non-secret; may be scripted by the agent when known
setx SAP_DEV_URL "https://sap.example.com:44300"
# Password — set by the human only
setx SAP_DEV_DEVELOPER_PWD "<password>"
When any required variable is missing, the client returns a JSON error that
names the exact setx commands to run. Treat this as a configuration issue,
not a network failure.
Full details are in references/connection-and-credentials.md.
Every invocation looks like:
python $client --dest DEV_100_DEVELOPER_EN <command> [options]
Where $client holds the repo-root-relative path to the Python source:
$client = ".\skills\sap-adt-commands\scripts\adt-client.py"
The examples below assume the current working directory is the repository
root. When the skill is installed by an AI client (for example via
npx skills add), the on-disk layout is client-specific — resolve the
installed skill directory for that client instead of assuming this path.
Do not define the client variable as a two-element string array such
as $exe = "python", "scripts/adt-client.py" and then invoke it with
& $exe .... That pattern relies on PowerShell array splatting, is
flagged by PSScriptAnalyzer, and breaks in subtle ways when arguments
contain spaces or quotes. Keep the variable as a single script path and
put python on the command line explicitly, or invoke python directly
without a variable.
The output is JSON on stdout. Non-zero exit codes accompany connection or runtime failures. See references/development.md for installation, dependencies, and the optional local build procedure.
Each group has a dedicated reference file. Load a reference only when the agent is actively working on that group.
Discovery and inspection — read-only browsing, search, source read,
metadata, where-used, history, diff. Load
references/command-discovery-and-inspection.md
when the task begins, before any write.
Commands: discovery, search, objects, packages,
packages-by-responsible, objects-by-user, reports-by-user, source,
object-properties, where-used, history, diff, inactive-objects,
transports, transport-contents, read-message-class,
read-text-elements.
Source and object management — writes, creations, activation, unlock,
and delete. Load
references/command-source-and-object-management.md
when the confirmed task involves modifying or creating ABAP objects.
Commands: write-source, create-package, create-program,
create-class, create-interface, create-function-group,
create-function-module, create-cds, create-transaction,
create-message-class, activate, unlock, delete.
Message classes and text elements — read and edit T100 messages and
program text elements. Load
references/command-messages-and-text-elements.md
when the task involves messages or selection-screen / symbol / heading
texts.
Commands: read-message-class, write-messages, add-message,
update-message, delete-message, read-text-elements,
write-text-elements.
Quality checks and testing — static analysis and unit tests. Load
references/command-quality-and-testing.md
before proposing an activation or release for changes the agent authored.
Commands: atc-check, abap-unit.
Transports and object lifecycle — CTS operations. Load
references/command-transports-and-lifecycle.md
when the task involves creating, moving, releasing, or deleting transport
requests, or when moving objects between tasks.
Commands: transports, create-transport, release-transport,
move-object, transport-contents, delete-transport.
Troubleshooting — references/troubleshooting.md. Load when a command fails with an authorization, endpoint availability, lock, activation, transport, or TLS error.
Development — references/development.md. Load when installing Python dependencies or when a contributor wants to build a local executable with PyInstaller.
Each workflow is a short sequence, not an exhaustive script. Read the relevant reference file before running write steps.
python $client --dest DEV_100_DEVELOPER_EN discovery
python $client --dest DEV_100_DEVELOPER_EN search "Z*" --type PROG/P
python $client --dest DEV_100_DEVELOPER_EN objects ZEXAMPLE_PACKAGE
python $client --dest DEV_100_DEVELOPER_EN objects-by-user DEVELOPER --type CLAS/OC
python $client --dest DEV_100_DEVELOPER_EN object-properties ZEXAMPLE_PROGRAM --type PROG/P
python $client --dest DEV_100_DEVELOPER_EN source ZEXAMPLE_PROGRAM --type PROG/P
python $client --dest DEV_100_DEVELOPER_EN diff ZEXAMPLE_PROGRAM --type PROG/P
python $client --dest DEV_100_DEVELOPER_EN history ZEXAMPLE_PROGRAM --type PROG/P
python $client --dest DEV_100_DEVELOPER_EN create-package ZEXAMPLE_PACKAGE `
--description "Example package" --superpackage ZEXAMPLE_ROOT --transport DEVK900001
python $client --dest DEV_100_DEVELOPER_EN create-program ZEXAMPLE_PROGRAM `
--description "Example report" --package ZEXAMPLE_PACKAGE --transport DEVK900001
python $client --dest DEV_100_DEVELOPER_EN write-source ZEXAMPLE_PROGRAM `
--text "REPORT zexample_program." --type PROG/P --transport DEVK900001
python $client --dest DEV_100_DEVELOPER_EN activate ZEXAMPLE_PROGRAM:PROG/P
Confirm each step with the human when the write is destructive or targets a tracked transport.
python $client --dest DEV_100_DEVELOPER_EN create-message-class ZEXAMPLE_MSAG `
--description "Example messages" --package ZEXAMPLE_PACKAGE --transport DEVK900001
python $client --dest DEV_100_DEVELOPER_EN add-message ZEXAMPLE_MSAG --id 001 --text "No data found" --transport DEVK900001
python $client --dest DEV_100_DEVELOPER_EN update-message ZEXAMPLE_MSAG --id 001 --text "No data for selection" --transport DEVK900001
python $client --dest DEV_100_DEVELOPER_EN activate ZEXAMPLE_MSAG:MSAG/N
python $client --dest DEV_100_DEVELOPER_EN transports --owner DEVELOPER
python $client --dest DEV_100_DEVELOPER_EN transport-contents DEVK900001
python $client --dest DEV_100_DEVELOPER_EN create-transport --description "TICKET-1234: Feature X" --package ZEXAMPLE_PACKAGE
python $client --dest DEV_100_DEVELOPER_EN move-object ZEXAMPLE_PROGRAM:PROG/P --transport DEVK900002
Never release or delete a transport without contemporaneous human authorization.
python $client --dest DEV_100_DEVELOPER_EN atc-check ZEXAMPLE_PROGRAM:PROG/P
python $client --dest DEV_100_DEVELOPER_EN abap-unit ZEXAMPLE_PROGRAM:PROG/P
An UNKNOWN gate is not a PASS. See
references/command-quality-and-testing.md.
{"error": "Missing connection values ..."}, follow
the connection reference; do not retry blindly.Accept: */*); the client already handles this.release-transport, stop and report per-task
results before deciding whether to retry.Detailed decision trees are in references/troubleshooting.md.
scripts/adt-client.py — Python source (authoritative and only
distributed entry point).scripts/adt-client.spec — optional PyInstaller build configuration for
contributors who want to package a local executable for their own use.
No prebuilt binary is committed to the default branch.requirements.txt — Python runtime dependencies.references/*.md — focused documentation for each command group.Before reporting a task complete, verify:
object-properties or a similar read-only call confirms the final
state matches the intent.