You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
My contribution adds a new instruction, prompt, agent, skill, workflow, or canvas extension file in the correct directory.
The file follows the required naming convention.
The content is clearly structured and follows the example format.
I have tested my instructions, prompt, agent, skill, workflow, or canvas extension with GitHub Copilot.
I have run npm start and verified that README.md is up to date.
I am targeting the main branch for this pull request.
Description
Summary
Adds the sap-cloud-integration skill (SAP Cloud Integration / CPI runtime knowledge) and the SAP Integration Suite Copilot agent, which delegates CPI questions to it.
This reworks the submission after the feedback on #6364, which said the earlier version was "a short persona prompt and broad checklist" with no example of what it gets right that a capable model would miss. The new version is a skill with four reference files of CPI runtime behavior:
Groovy script API: streaming body access, MPL properties vs. custom header properties vs. gated attachments, SecureStoreService, ValueMappingApi
Header vs. exchange property scope: ProcessDirect, JMS (Transfer Exchange Properties, 4 MB limit), HTTP receiver Request Headers (none by default), Allowed Header(s), SAP_* / Camel* names the runtime reads
Exception Subprocess outcomes: End → Completed, Error End → Failed, Escalation End → Escalated; SAP_MessageProcessingLogCustomStatus; CamelExceptionCaught with AhcOperationFailedException / OsciException; JMS retry with SAPJMSRetries (Non-Exclusive queues)
MPL error → cause → check: SFTP, HTTP/OAuth/certificates (including SAP_DisableMonitoringHeaders for unexplained HTTP 400), Cloud Connector, IDoc, OData, SOAP, AS2
Every behavior claim is cross-checked against the SAP Help Portal source in SAP-docs/btp-integration-suite. references/sap-documentation-index.md links each topic to the SAP page it comes from. Author: SAP integration architect with 20+ years on SAP PI/PO and Integration Suite.
Evaluation: same model, with and without the skill
Environment: VS Code 1.145.3, GitHub Copilot Chat 0.33.1, Agent mode, model Copilot Fusion (auto-routed to gpt-6-luna). Each prompt ran in a new chat, first in an empty workspace (plain), then in a workspace containing only .github/skills/sap-cloud-integration (skill). Screenshots below.
#
Prompt
Without skill
With skill
1
"In the Exception Subprocess I need the receiver's HTTP status and error body."
❌ Checks for org.apache.camel.component.http.HttpOperationFailedException with instanceof. CPI's HTTP receiver throws org.apache.camel.component.ahc.AhcOperationFailedException (SAP script example), so the script never matches and always throws.
✅ Reads CamelExceptionCaught, compares by class name to AhcOperationFailedException as SAP's example does, extracts getStatusCode(), getStatusText(), getResponseBody(), and notes the OData V2 difference. Copilot shows it read error-handling-reliability.md.
2
"Write a Groovy script that logs the full payload for every message to the MPL."
⚠️ Attaches the payload unconditionally to every message's MPL, with a general caution only.
✅ Same script, but the attachment is gated by a property fed from an externalized LOG_PAYLOAD flag, with a tenant test (flag off → no attachment) and storage/PII guidance.
3
"My Exception Subprocess … ends with an End event. Support says failed messages don't show up as failed. Why?"
⚠️ Correct main fix (Error End).
✅ Also: Escalation End for status Escalated, CamelHttpResponseCode so synchronous callers don't get HTTP 200, and SAP_MessageProcessingLogCustomStatus when the error is handled on purpose, so support can filter by Custom Status.
Where the skill did not add much: for "property lost over JMS", both answers proposed copying it into a header (the skill only added the Transfer Exchange Properties caution). For "IDoc status 56", the plain answer was already good. That test exposed an overly narrow line in the skill, which I corrected before this submission.
Screenshots: with and without the skill (click to expand)
Without skill — #1 HTTP status in Exception Subprocess
With skill — #1 HTTP status in Exception Subprocess
Vally currently lints SKILL.md content. Agent files were detected but skipped:
Full linter output
### Linting skills/sap-cloud-integration
✅ sap-cloud-integration (2/2 checks passed)
✓ [spec-compliance] All 1 skill(s) are spec-compliant.
✓ spec-compliance: All spec checks passed.
✓ [valid-refs] All file references across 1 skill(s) are valid.
✓ valid-refs: All file references resolve to existing files within the skill directory.
1 skill(s) linted, 1 passed
### Agent files detected (not linted by vally)
ℹ️ Vally currently lints SKILL.md content. Agent files were detected but skipped:
agents/sap-integration-suite-copilot.agent.md
Risk tier:merge-risk:medium — New or substantially changed resource without privileged execution Required to merge: passing submission-gate checks plus 1 approval from reviewers with write access.
Why this tier
Adds 8 file(s), e.g. agents/sap-integration-suite-copilot.agent.md
Adds an SAP Integration Suite agent to the repository’s Copilot agent collection, with guidance for integration development, review, and troubleshooting.
Changes:
Defines SAP-focused scope, working practices, accuracy rules, and handoffs for reviews and test generation.
Adds the agent to the catalog with VS Code and VS Code Insiders installation links.
File
Description
docs/README.agents.md
Lists the new agent and installation links.
agents/sap-integration-suite-copilot.agent.md
Defines the SAP Integration Suite agent and its workflows.
Thanks, agreed. Generated code no longer includes author credit or URLs; existing authorship/license notices are preserved. Resource-level author credit (line 19) is unchanged.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The agent’s SAP-specific guidance remains too limited, with generic capability lists and checklists needing replacement by a concrete CPI workflow, runtime constraints, and expected results.
No open issues 🎉
1 previously missed issue
In code that hasn't changed since last review
Replace the PR template with Copilot evaluation evidence
agents/sap-integration-suite-copilot.agent.md:17
The PR description is still an unfilled template and provides no realistic usage scenario or evaluation results, so maintainers cannot assess whether this agent works in Copilot as intended. The repository's review criteria ask for validation evidence; please document a representative CPI request, the Copilot environment, and expected versus observed results, including the review and test-case handoffs. A manual evaluation is sufficient; tenant deployment is not required.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The handoff may hide the validation caveat when deployment is reported without confirmed tenant execution or successful testing, leaving verification evidence insufficient.
No open issues 🎉
1 previously missed issue
In code that hasn't changed since last review
Do not treat deployment as verified tenant execution
agents/sap-integration-suite-copilot.agent.md:54
The handoff can suppress the only explicit validation caveat merely because the user says the artifact was deployed, even when no tenant execution or successful test is confirmed. Deployment alone does not establish that the iFlow was exercised; please distinguish deployment from tenant testing and keep the status note (or report the test evidence) until execution is verified.
Addressed the review: removed the author line from the agent prompt (it caused attribution in generated code), added explicit generated-code rules and a structured output format, and added manual Copilot evaluation evidence (3 test cases) to the description. Ready for review.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
The agent assumes a skill omitted by button-based installation, while its reference guidance overstates duplicate prevention and specifies an incompatible batch payload format for the OData V2 receiver adapter.
You are an SAP Integration Suite specialist. For SAP Cloud Integration (CPI) work, apply the `sap-cloud-integration` skill and read its references before answering. They hold the runtime behavior this agent relies on: header and property scope, Exception Subprocess status, JMS retry, the Groovy script API, and adapter error mapping.
- Errors arrive as `OsciException`. Read the OData error payload from the body inside the Exception Subprocess.
- For large reads, use **Process in Pages** and `$select`, rather than one unrestricted query.
- For `$batch`, build the multipart batch structure the adapter expects, and inspect per-operation responses. A batch can return HTTP 202 while single operations failed.
| Caller waits for the result | Synchronous Request-Reply. **No runtime retry**: the caller must retry, and the receiver call must be safe to repeat. |
| No duplicates at a receiver that is not idempotent |**Idempotent Process Call** around the receiver call. Use a stable business key as Message ID (`${header.SAP_ApplicationID}` or a payload key). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request Checklist
npm startand verified thatREADME.mdis up to date.mainbranch for this pull request.Description
Summary
Adds the
sap-cloud-integrationskill (SAP Cloud Integration / CPI runtime knowledge) and the SAP Integration Suite Copilot agent, which delegates CPI questions to it.This reworks the submission after the feedback on #6364, which said the earlier version was "a short persona prompt and broad checklist" with no example of what it gets right that a capable model would miss. The new version is a skill with four reference files of CPI runtime behavior:
SecureStoreService,ValueMappingApiSAP_*/Camel*names the runtime readsSAP_MessageProcessingLogCustomStatus;CamelExceptionCaughtwithAhcOperationFailedException/OsciException; JMS retry withSAPJMSRetries(Non-Exclusive queues)SAP_DisableMonitoringHeadersfor unexplained HTTP 400), Cloud Connector, IDoc, OData, SOAP, AS2Every behavior claim is cross-checked against the SAP Help Portal source in SAP-docs/btp-integration-suite.
references/sap-documentation-index.mdlinks each topic to the SAP page it comes from. Author: SAP integration architect with 20+ years on SAP PI/PO and Integration Suite.Evaluation: same model, with and without the skill
Environment: VS Code 1.145.3, GitHub Copilot Chat 0.33.1, Agent mode, model Copilot Fusion (auto-routed to gpt-6-luna). Each prompt ran in a new chat, first in an empty workspace (plain), then in a workspace containing only
.github/skills/sap-cloud-integration(skill). Screenshots below.org.apache.camel.component.http.HttpOperationFailedExceptionwithinstanceof. CPI's HTTP receiver throwsorg.apache.camel.component.ahc.AhcOperationFailedException(SAP script example), so the script never matches and always throws.CamelExceptionCaught, compares by class name toAhcOperationFailedExceptionas SAP's example does, extractsgetStatusCode(),getStatusText(),getResponseBody(), and notes the OData V2 difference. Copilot shows it readerror-handling-reliability.md.LOG_PAYLOADflag, with a tenant test (flag off → no attachment) and storage/PII guidance.CamelHttpResponseCodeso synchronous callers don't get HTTP 200, andSAP_MessageProcessingLogCustomStatuswhen the error is handled on purpose, so support can filter by Custom Status.Where the skill did not add much: for "property lost over JMS", both answers proposed copying it into a header (the skill only added the Transfer Exchange Properties caution). For "IDoc status 56", the plain answer was already good. That test exposed an overly narrow line in the skill, which I corrected before this submission.
Screenshots: with and without the skill (click to expand)
Without skill — #1 HTTP status in Exception Subprocess
With skill — #1 HTTP status in Exception Subprocess
Without skill — #2 Payload logging
With skill — #2 Payload logging
Without skill — #3 End event in Exception Subprocess
With skill — #3 End event in Exception Subprocess
Without skill — Property lost over JMS
With skill — Property lost over JMS
Without skill — IDoc status 56
With skill — IDoc status 56 (before the IDoc correction)
Changes since the first review