{"ref":"artifact:sap-aicore-sdk-java","page":"/artifacts/sap-aicore-sdk-java","json":"/artifacts/sap-aicore-sdk-java.json","generated":"2026-10-29","drafted_with_ai":true,"entity":{"id":"sap-aicore-sdk-java","name":"aicore-sdk-java","artifact_type":"skill","ecosystem":"btp","domain":"ai-and-agents","origin_ring":"sap-official","description":{"one_line":"An agent skill for the SAP AI SDK for Java: it answers a request for Java or Kotlin code that calls the Generative AI Hub from thirteen templates it carries, before it looks anything up.","short":"Agent skill generating Java boilerplate for SAP GenAI Hub","what_it_solves":"Thirteen templates under `assets/`, one per use case (chat, streaming, multi-turn, embeddings, grounding, prompt registry, Spring AI, batch jobs, the native OpenAI Responses API, RPT tabular completion, content filtering and data masking), each listed with the `com.sap.ai.sdk` artifact it needs, so a request for Java that calls a model is answered with a file. The skill fixes where an answer may come from and in which order: the assets first, then Context7 MCP against `SAP/ai-sdk-java` if that tool is registered in the session, then the offline `references/SDK_JAVA.md`, and where none of the three covers the question it is told to say so and point at SAP's own Java SDK documentation instead of inventing a class name. Several of its rules are prohibitions: an `OrchestrationAiModel` constant and never a raw model-name string; `OrchestrationClient` as the primary client for the five jobs it lists, chat, streaming, embeddings, grounding, filtering, with `OpenAiClient` left to direct OpenAI proxy cases; and in a Spring Boot controller `ResponseBodyEmitter` with `ThreadContextExecutors`, never `SseEmitter`, a virtual thread or a raw `Flux`, while Spring AI's own `ChatModel.stream()` keeps its `Flux`. Before writing anything it collects the use case, the model, Maven or Gradle and plain Java or Spring Boot, and it declines to diagnose SDK behaviour it has no source for, sending that to the ai-sdk-java issue tracker. Its stated requirements are Java 17 or later, Maven or Gradle, and an [SAP AI Core](artifact:btp-ai-core) service key in `AICORE_SERVICE_KEY`; it installs with `--skill aicore-sdk-java` from the same repository as [sap-fiori-guidelines](artifact:sap-fiori-guidelines) and the [aicore-skills](artifact:sap-aicore-skills) plugin, and a request for JavaScript is handed to [aicore-sdk-js](artifact:sap-aicore-sdk-js).","when_not_to_use":"Java and Kotlin only: JavaScript and TypeScript go to [aicore-sdk-js](artifact:sap-aicore-sdk-js), and nothing here covers Python. It writes code and stops there: the first rule hands a missing deployment to the AI Core console or an administrator before any code is generated, so a session without one gets code and no way to run it.","to_build_on_it":"The asset map is the extension point: a use case the thirteen templates do not name falls through to Context7 or `references/SDK_JAVA.md`, so a new template under `assets/` with its `com.sap.ai.sdk` dependency in the table is what closes one. The skill is SAP's own code in the AI Skills Library repository, where a change to an existing skill starts with an issue and a maintainer's go-ahead before a pull request."},"links":{"repo":"https://github.com/SAP/ai-skills-library/tree/main/skills/aicore-sdk-java","homepage":"https://skills.cloud.sap"},"identity":{"author":"SAP","license":"Apache-2.0"},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/README.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/README.md, Installation","checked":"2026-10-27","quote":"npx skills add SAP/ai-skills-library --skill aicore-sdk-java"}]}},"agent":{"install":"npx skills add SAP/ai-skills-library --skill aicore-sdk-java","source":{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/README.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/README.md, Installation","checked":"2026-10-27","quote":"npx skills add SAP/ai-skills-library --skill aicore-sdk-java"}},"skills":{"provenance":"indexed","kind":"capability","canonical_source":"https://github.com/SAP/ai-skills-library/tree/main/skills/aicore-sdk-java"},"provides":[{"capability":"capability:agent-guidance","what_it_does":"Answers a Java or Kotlin request about the Generative AI Hub from thirteen templates and a fixed fallback order — assets, then Context7, then its offline reference — with the client to use, the model constant and the Spring Boot streaming shape stated as rules rather than left to the model.","facets":[{"key":"installs_into","value":["Claude Code","Codex","Cursor","OpenCode"],"source":{"url":"https://github.com/SAP/ai-skills-library","title":"SAP/ai-skills-library — README, Requirements and Setup","checked":"2026-10-27","quote":"Install skills using the [skills CLI](https://github.com/vercel-labs/skills), which supports Claude Code, Codex, Cursor, OpenCode, and many more agents."}}],"sources":[{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/SKILL.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/SKILL.md, frontmatter description","checked":"2026-10-27","quote":"Generate working Java boilerplate for SAP GenAI Hub using the SAP AI SDK for Java"},{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/SKILL.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/SKILL.md, Asset Map (thirteen templates with their dependencies)","checked":"2026-10-27"},{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/SKILL.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/SKILL.md, Sources & Fallback","checked":"2026-10-27","quote":"if no asset matches, fetch live docs via Context7"},{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/SKILL.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/SKILL.md, Sources & Fallback","checked":"2026-10-27","quote":"Do not fabricate class names, method signatures, or config shapes."},{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/SKILL.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/SKILL.md, Rules","checked":"2026-10-27","quote":"Use `OrchestrationAiModel` constants (e.g. `OrchestrationAiModel.GPT_4O_MINI`) — never raw model name strings."},{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/SKILL.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/SKILL.md, Rules, streaming","checked":"2026-10-27","quote":"always use `ResponseBodyEmitter` + `ThreadContextExecutors.getExecutor().execute()` to forward deltas. Never use `SseEmitter`, `Thread.ofVirtual()`, or expose a raw `Flux` from the controller."},{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/SKILL.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/SKILL.md, Rules, SDK bugs","checked":"2026-10-27","quote":"share only verified workarounds from the assets or reference docs, and direct the user to https://github.com/SAP/ai-sdk-java/issues"},{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/SKILL.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/SKILL.md, frontmatter, what it declines","checked":"2026-10-27","quote":"DO NOT USE FOR: JavaScript/TypeScript code — use `aicore-sdk-js`."},{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/SKILL.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/SKILL.md, Rules, no deployment","checked":"2026-10-27","quote":"If no deployment exists, check the SAP AI Core console or contact your admin to list or create one before generating code."},{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/SKILL.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/SKILL.md, frontmatter compatibility","checked":"2026-10-27","quote":"Requires Java 17+ and Maven or Gradle. Context7 MCP is optional (see Sources & Fallback)."}]}],"requires":[{"ref":"artifact:btp-ai-core","for":"The code it writes calls the Generative AI Hub, and the README names the service key in `AICORE_SERVICE_KEY` among the three things that have to be in place; the skill also tells the agent to put credential guidance in the generated comments.","requirement":"required","basis":"binding","sources":[{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/README.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/README.md, Requirements","checked":"2026-10-27","quote":"SAP AI Core service key (`AICORE_SERVICE_KEY` environment variable)"},{"url":"https://raw.githubusercontent.com/SAP/ai-skills-library/main/skills/aicore-sdk-java/SKILL.md","title":"SAP/ai-skills-library — skills/aicore-sdk-java/SKILL.md, Credential Setup","checked":"2026-10-27","quote":"Set the `AICORE_SERVICE_KEY` environment variable to the JSON service key from SAP AI Core:"}]}],"provenance":{"discovered_via":[{"source":"source:sap-ai-skills-library","channel":"github.com/SAP/ai-skills-library — skills/aicore-sdk-java"}],"first_seen":"2026-10-27"},"maintainers":["actor:sap"],"history":[{"date":"2026-10-27","field":"entry","from":null,"to":"created","reason":"SAP's own code in the AI Skills Library repository, which the atlas holds as source:sap-ai-skills-library rather than as an artifact, so the skill is entered from its SKILL.md and README as sap-fiori-guidelines was on 2026-09-29 and plugins/aicore-skills on 2026-09-25. Hard rule 7: skills are indexed, never written here."}],"drafted_with_ai":true},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"10 contributors, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Survived majors","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Maintainer's CI","tier":"fair","evidence":"workflows present, no completed run on the default branch"}],"practice":[{"label":"Tests","tier":"poor","evidence":"none found in the tree"},{"label":"Docs","tier":"poor","evidence":"README 1 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":95,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-28","npm":"not published under this name","stars":95,"forks":21,"open_issues":10,"archived":false,"pushed_at":"2026-10-22","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","created_at":"2026-05-07T13:40:56Z","open_prs":1,"tree_truncated":false,"test_files":0,"workflows":2,"other_ci":false,"readme_bytes":989,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2026-10-22","last_commit":"2026-10-22","commits":1,"contributors":10,"readme_path":"skills/aicore-sdk-java/README.md","readme_sha":"bbf0654eb8c852666aa7491cba8f2fe39dccf8f7","repo_read":"2026-10-28"},"edges":{"maintainers":[{"ref":"actor:sap","name":"SAP","json":"/actors/sap.json"}],"contributors":[],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}