Install any skill in seconds. Free to start, no credit card required.
Get Started Free →This skill provides comprehensive knowledge for SAP Service Manager on SAP Business Technology Platform (BTP). It should be used when managing service instances, bindings, brokers, and platforms across Cloud Foundry, Kyma, Kubernetes, and other environments. Use when provisioning services via SMCTL CLI, BTP CLI, or REST APIs, configuring OAuth2 authentication, working with the SAP BTP Service Operator in Kubernetes, troubleshooting service consumption issues, or implementing cross-environment se
.claude/skills/secondsky-sap-btp-service-manager/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 142% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 184% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 224% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 111% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 386% | 0% |
Comprehensive skill for managing services across SAP BTP environments using SAP Service Manager.
Use this skill when working on tasks involving:
Service Instance Management:
Service Binding Management:
Platform & Broker Management:
Authentication & Authorization:
Kubernetes/Kyma Integration:
API & CLI Operations:
Troubleshooting:
⚠️ Important: The SMCLI repository was archived on September 30, 2025. While the tool remains functional, consider migration strategies for long-term SAP BTP workflows.
Recommended Method (Go):
bash# Install via Go (preferred approach) go install github.com/Peripli/service-manager-cli@latest # Add to PATH (if not already) export PATH=$PATH:$(go env GOPATH)/bin smctl --version
Alternative Method (Prebuilt Binary):
bash# Download from: https://github.com/Peripli/service-manager-cli/releases/latest tar -xzf smctl-*.tar.gz && chmod +x smctl sudo mv smctl /usr/local/bin/ && smctl --version
Note: While the prebuilt binary method remains functional, the Go installation approach is officially recommended. Consider evaluating SAP's native BTP CLI as an alternative for new deployments.
bash# Interactive login smctl login -a https://service-manager.cfapps.<region>.hana.ondemand.com \ --param subdomain=<subdomain> # Client credentials smctl login -a https://service-manager.cfapps.<region>.hana.ondemand.com \ --param subdomain=<subdomain> --auth-flow client-credentials \ --client-id <id> --client-secret <secret>
bash# Browse services smctl marketplace # Create instance (async) smctl provision my-instance <service> <plan> # Create binding smctl bind my-instance my-binding
SAP Service Manager is the central registry for service brokers and platforms in SAP BTP.
Primary Resources:
| Plan | Purpose | Scopes | |------|---------|--------| | subaccount-admin | Full management | 10 scopes (manage + read) | | subaccount-audit | Read-only monitoring | 6 scopes | | container | Isolated management | 7 scopes |
Via Cockpit: Services > Instances > Create > Select service/plan > Cloud Foundry runtime
Via CF CLI:
bash# Create instance cf create-service <service> <plan> <instance-name> # Bind to app cf bind-service <app-name> <instance-name> # Create service key (external access) cf create-service-key <instance-name> <key-name>
1. Install cert-manager:
bashkubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml
2. Create Service Manager resources:
bashsmctl provision sm-operator service-manager service-operator-access --mode sync smctl bind sm-operator sm-operator-binding --mode sync smctl get-binding sm-operator-binding -o json
3. Deploy operator:
bashhelm repo add sap-btp-operator https://sap.github.io/sap-btp-service-operator/ helm install sap-btp-operator sap-btp-operator/sap-btp-operator \ --namespace sap-btp-operator --create-namespace \ --set manager.secret.clientid=<id> \ --set manager.secret.clientsecret=<secret>
ServiceInstance:
yamlapiVersion: services.cloud.sap.com/v1alpha1 kind: ServiceInstance metadata: name: my-service-instance spec: serviceOfferingName: <service-offering> servicePlanName: <plan-name>
ServiceBinding:
yamlapiVersion: services.cloud.sap.com/v1alpha1 kind: ServiceBinding metadata: name: my-binding spec: serviceInstanceName: my-service-instance
Reference: See references/kubernetes-operator.md for complete guide.
Alternative to SMCTL using the unified BTP CLI:
bash# Create instance btp create services/instance \ --subaccount <subaccount-id> \ --service <service-name> \ --plan <plan-id> \ --parameters '{"key":"value"}' \ --labels '{"env":["dev"]}' # Get instance details btp get services/instance <instance-id> \ --subaccount <subaccount-id> \ --show-parameters # Create binding btp create services/binding \ --subaccount <subaccount-id> \ --binding <binding-name> \ --service-instance <instance-id> # Platform management btp list services/platform --subaccount <id> btp register services/platform --subaccount <id> --name <name> --type <type> btp unregister services/platform <platform-id> --subaccount <id>
bashcurl '<uaa_url>/oauth/token' -X POST \ -H 'Accept: application/json' \ -d 'grant_type=client_credentials&client_id=<clientid>&client_secret=<clientsecret>'
Response:
json{ "access_token": "<token>", "token_type": "bearer", "expires_in": 43199, "scope": "<xsappname>.job.read <xsappname>.event.read" }
https://service-manager.cfapps.<region>.hana.ondemand.com/v1/
Three concurrent tiers enforced:
HTTP 429 returned with Retry-After header when limits exceeded.
Query parameters:
fieldQuery - Filter by resource attributeslabelQuery - Filter by resource labelseq, ne, in, contains, etc.Reference: See references/rate-limiting-filtering.md for complete rate limits and filtering details.
| Category | Commands | Description | |----------|----------|-------------| | Authentication | login, logout | Manage sessions | | Instances | provision, deprovision, list-instances | Service instance lifecycle | | Bindings | bind, unbind, list-bindings | Service binding management | | Brokers | register-broker, update-broker | Service broker operations | | Platforms | register-platform, list-platforms | Platform registration | | Marketplace | marketplace | Browse service offerings |
--mode sync/async - Execution mode (default: async)-c, --parameters - JSON configuration-o, --output - Output format (json, yaml, text)-v, --verbose - Detailed outputReference: See references/smctl-commands.md for complete command reference with all flags and examples.
bash# Get operation URL from provision/bind response smctl status /v1/service_instances/<id>/operations/<op-id>
API:
GET /v1/{resourceType}/{resourceID}/operations/{operationID}Response states: in progress, succeeded, failed
Prerequisites:
bash# Force delete without confirmation smctl deprovision my-instance -f # Sync mode smctl deprovision my-instance --mode sync
Note: Kyma/Kubernetes instances cannot be deleted from BTP cockpit.
Check:
Check:
Debug:
bashsmctl get-instance <name> -o json # Check "last_operation" for error details
Solution:
Retry-After headerCheck:
bash# SMCTL smctl get-binding <name> -o json # Kubernetes kubectl get secrets <binding-name> -o yaml
Check:
bashsmctl provision my-instance service plan --mode sync
bashsmctl provision my-instance service plan \ -c '{}' \ --labels '{"environment":"production","team":"platform"}'
Instead of binding to apps, create service keys for external clients.
For async operations, poll status with exponential backoff.
subaccount-admin: Full managementsubaccount-audit: Read-only monitoringcontainer: Isolated per-instance accessReady-to-use templates in templates/ directory:
Detailed documentation in references/ directory:
https://service-manager.cfapps.<region>.hana.ondemand.com/swaggerui/swagger-ui.htmlWhen using this skill:
For Cloud Foundry: Use cf CLI or cockpit For Kubernetes: Use ServiceInstance/ServiceBinding CRDs For Other environments: Use SMCTL or BTP CLI For API access: Retrieve OAuth2 token first
When troubleshooting:
License: GPL-3.0 Version: 1.1.1 Maintained by: Eduard Jiglau Email: hello@sap-ai-skills.com Website: https://sap-ai-skills.com Repository: https://github.com/secondsky/sap-skills
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-20 | pass→pass | 9,234 | 7,644 | -17% | 1 | 1 | 0% | 1,695 | 5,613 | +231% | 0 | 0 | — |
case-01 | fail→pass | 13,650 | 12,321 | -10% | 1 | 1 | 0% | 2,800 | 6,766 | +142% | 0 | 0 | — |
case-02 | fail→pass | 9,301 | 4,971 | -47% | 1 | 1 | 0% | 1,749 | 4,967 | +184% | 0 | 0 | — |
case-03 | fail→pass | 8,926 | 5,283 | -41% | 1 | 1 | 0% | 1,599 | 5,187 | +224% | 0 | 0 | — |
case-04 | fail→pass | 13,226 | 5,029 | -62% | 1 | 1 | 0% | 2,432 | 5,120 | +111% | 0 | 0 | — |
case-05 | fail→pass | 5,744 | 4,348 | -24% | 1 | 1 | 0% | 1,011 | 4,911 | +386% | 0 | 0 | — |
case-06 | fail→pass | 8,570 | 3,272 | -62% | 1 | 1 | 0% | 1,563 | 4,848 | +210% | 0 | 0 | — |
case-07 | pass→pass | 12,261 | 9,819 | -20% | 1 | 1 | 0% | 2,012 | 5,852 | +191% | 0 | 0 | — |
case-08 | pass→pass | 11,928 | 8,786 | -26% | 1 | 1 | 0% | 2,065 | 5,840 | +183% | 0 | 0 | — |
case-09 | pass→pass | 9,255 | 6,662 | -28% | 1 | 1 | 0% | 1,828 | 5,552 | +204% | 0 | 0 | — |
case-10 | fail→fail | 10,452 | 8,932 | -15% | 1 | 1 | 0% | 1,939 | 5,951 | +207% | 0 | 0 | — |
case-11 | pass→pass | 10,531 | 6,764 | -36% | 1 | 1 | 0% | 1,775 | 5,414 | +205% | 0 | 0 | — |
case-12 | pass→pass | 6,997 | 2,769 | -60% | 1 | 1 | 0% | 1,240 | 4,651 | +275% | 0 | 0 | — |
case-13 | pass→pass | 6,137 | 5,240 | -15% | 1 | 1 | 0% | 1,220 | 5,226 | +328% | 0 | 0 | — |
case-14 | fail→pass | 6,273 | 5,282 | -16% | 1 | 1 | 0% | 1,260 | 5,329 | +323% | 0 | 0 | — |
case-15 | pass→pass | 10,892 | 9,261 | -15% | 1 | 1 | 0% | 2,076 | 6,171 | +197% | 0 | 0 | — |
case-16 | pass→pass | 6,044 | 3,459 | -43% | 1 | 1 | 0% | 1,014 | 4,729 | +366% | 0 | 0 | — |
case-17 | fail→pass | 15,102 | 4,582 | -70% | 1 | 1 | 0% | 886 | 4,911 | +454% | 0 | 0 | — |
case-18 | pass→pass | 4,931 | 2,891 | -41% | 1 | 1 | 0% | 775 | 4,764 | +515% | 0 | 0 | — |
case-19 | fail→pass | 4,965 | 3,569 | -28% | 1 | 1 | 0% | 849 | 4,926 | +480% | 0 | 0 | — |
case-21 | pass→pass | 13,320 | 10,705 | -20% | 1 | 1 | 0% | 2,201 | 6,181 | +181% | 0 | 0 | — |
case-22 | pass→pass | 8,752 | 7,088 | -19% | 1 | 1 | 0% | 1,635 | 5,592 | +242% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.