SkillSkilltypeA procedure an agent follows. Indexed here, never written here.See every one →What this type is →by SAPby SAPoriginPublished by SAP itself. A visible facet, never an input to a reading — a dormant official plugin reads exactly like a dormant independent one.See every one →

sap-tutorials-content

An agent skill that maps the public developers.sap.com content API: the catalogue, the navigation, a tutorial's HTML or JSON, and full-text search, all anonymous and read-only.

Lists the paths an agent needs to find and read SAP's developer tutorials with no login, token or API key, starting at /llms.txt for orientation and /build/catalog for the whole missions, groups and tutorials catalogue as JSON. It records what each path returns, among them /build/navigator for the tutorial-to-mission mappings and checkpoints, /build/slug-mapping for slug to internal id, /build/concepts for the published knowledge-graph concepts, /tutorials/{slug} for rendered HTML and /tutorials/{slug}.model.json for the structured shape, and it says slugs are lowercase canonical because a mixed-case request answers with a 301. Beside the paths it names three search surfaces: an OData v4 service, a GraphQL endpoint at /graphql/public, and a ready-made public MCP endpoint a client can point at instead of calling the paths itself. Reading is the whole of it: the endpoints are read-only, the skill tells the agent to honour the ETag and Cache-Control headers on what it calls a shared public service, and it dates its own check that they are reachable and anonymous to 2026-08-18.

Facts

Last pushLicenceApache-2.0

Where it sits

Lives in
Provides
Agent guidanceBTPAgent guidancecapabilityPackaged knowledge you hand a coding agent so it gets a framework right unprompted — skills, rule files, instruction packs. Distinct from agent tooling, which is about building agentic features into your application, and from [agent access to your code](capability:agent-code-access), where the agent reads the real project instead of being handed a file about it.

Who is behind it

SAP TutorialsSAP TutorialsOrganisationMaintains this
In the atlas: maintains 2
@sap-tutorials
SAPSAPOrganisationMaintains this
In the atlas: maintains 137, wrote 14
@SAP
maintainersThomas JungPersonContributes to this
Developer Advocate
In the atlas: contributes to 15, wrote 6
@jung-thomas
1 contributor

What it declares

Every artifact

Type
Skill
Origin
By SAP

As a skill

Distributed through
does not say

Tasks this contributes to1Beta

Keep the SAP knowledge an agent follows currentA developer wants what their agent is told about SAP to come from what SAP documents now, rather than from what the model learnt or what a skill file froze when it was written.Coversan endpoint map, so the content is read at the time of the call
What it does

The skill carries the paths of the public developers.sap.com content API rather than the tutorials themselves, so what the agent gets is whatever the catalogue serves when it calls. It states that everything there is anonymous and read-only, dates its own check of the endpoints, and tells the agent to honour the ETag and Cache-Control headers on what it calls a shared public service.

Remaining work

The agent makes the calls, and what the tutorials say is SAP's. The skill dates its check of the endpoints rather than claiming they are watched, so a path that moves is noticed when a call fails.

All options on the Agent guidance page →

Connections1

README

quoted from sap-tutorials/tutorials-ims under Apache-2.0, read
sap-tutorials/tutorials-ims/README.mdOn GitHub

SAP Tutorial Platform

A tutorial hosting platform for developers.sap.com that replaces both Adobe Experience Manager (AEM) and the legacy Java IMS backend. Fetches tutorial markdown from the sap-tutorials GitHub organization at build time, renders static pages with SAP Fundamental Styles (Horizon theme) via Hugo, and deploys on SAP BTP Cloud Foundry behind an AppRouter with XSUAA authentication. The CAP Node.js backend provides progress tracking, event management, and all services previously handled by the Spring Boot IMS application.

Production system replacing AEM tutorial hosting, Git-based authoring interface, and Java IMS backend on developers.sap.com (April 2026).

Stack: Hugo · CAP Node.js (CDS 9.x) · SAP HANA Cloud · SAP Fundamental Styles · Vue 3 (apps) · TypeScript · SAP BTP Cloud Foundry

Folder Map

tutorials-ims/
├── approuter/                  # BTP AppRouter — serves static files + proxies to CAP via XSUAA auth
│   ├── server.js               #   Custom AppRouter wrapper (VCAP merge, serve-static, proxy fixes)
│   ├── static/                 #   Pre-built assets deployed to CF
│   │   ├── admin-ui/           #     Admin shell (sap.tnt.ToolPage) + 11 Fiori Elements components
│   │   ├── analytics-ui/       #     Analytics Explorer Vue 3 SPA bundle
│   │   ├── scanner-ui/         #     UI5 barcode scanner bundle
│   │   ├── scanner-vue/        #     Vue 3 barcode scanner bundle
│   │   ├── display-app/        #     Display App SPA bundle (event monitor dashboard)
│   │   ├── qa/                 #     QA-channel Hugo build (gated by Tutorial.Author scope)
│   │   ├── css/img/js/         #     Global stylesheets, images, shared JS injected into Hugo pages
│   │   └── (no tutorials/)     #     Tutorials served dynamically from HANA, not static files
│   └── xs-app.json             #   Route definitions (/admin-ui, /analytics-ui, /scanner-*, /tutorials, /tutorials-qa, /api, /admin, /display, /chat, /search, /build, /content)
├── app/                        # Standalone UI applications (UI5 + Vue, deployed to approuter/static/)
│   ├── admin-shell/            #   sap.tnt.ToolPage shell with side navigation + theme switching
│   ├── admin/                  #   11 Fiori Elements feature components (events, missions, groups,
│   │                           #   accomplishments, prizes, tutorials, tags, operations, accounts,
│   │                           #   changelog, joule, feedback, analytics) loaded by the shell
│   ├── analytics-explorer/     #   Vue 3 + Vite + Monaco SQL editor over AnalyticsService
│   ├── scanner/                #   UI5 barcode scanner (sap.ndc.BarcodeScanner)
│   ├── display-app/            #   Standalone event monitor dashboard (Vue 3 + Vite, Socket.IO)
│   ├── admin-annotations.cds   #   @UI/@Common annotations for all admin screens
│   └── change-tracking.cds     #   @cap-js/change-tracking config for admin entities
├── hugo-apps/                  # Vue 3 page-level islands compiled into Hugo's static JS (output: hugo/static/js/)
│   └── src/                    #   9 entry points: navigator, app-space, event-display, nav-dropdown,
│       │                       #   scanner-vue, tutorial-feedback, tutorial-rating, cmd-palette, me
│       └── shared/             #   Shared utilities, API client, types
├── hugo/                       # Hugo static site generator — tutorial pages + layouts
│   ├── assets/css|js/          #   PostCSS pipeline (Fundamental Styles Horizon) + page-level JS
│   │                           #   includes ui5-bootstrap.ts (UI5 Web Components shellbar/dialog/etc.)
│   ├── config/                 #   Hugo configuration (hugo.toml, environment overrides)
│   ├── content/
│   │   ├── tutorials/          #     Generated tutorial markdown (gitignored, from fetch-tutorials)
│   │   ├── missions/           #     Generated mission overview pages
│   │   └── groups/             #     Generated completion-path pages
│   ├── data/                   #   Site-level data files (glossary, etc.)
│   ├── i18n/                   #   en_us only (developers.sap.com is English-only)
│   └── layouts/                #   _default, tutorials, missions, groups, partials, shortcodes
├── hugo.qa.toml                # Sibling Hugo config for QA channel (strips Joule FAB, rating, etc.)
├── preview-site/               # Hugo preview-site renderer (used by srv-qa preview path)
├── db/                         # Production CAP data model — CDS schema + HANA native artifacts
│   ├── schema.cds              #   Entity definitions (Users, Tutorials, Missions, Events, etc.)
│   ├── views.cds               #   CDS views (NavigatorCatalog, SearchableItems, CompletionAnalytics, …)
│   ├── persistence.cds         #   ContentFiles + ContentManifest (gzip-compressed tutorial BLOBs)
│   ├── audit-logging.cds       #   @PersonalData annotations (Users, UserMetaData, TaskRecords)
│   ├── change-tracking.cds     #   @cap-js/change-tracking annotations
│   ├── schema-ext.cds          #   Service-layer schema extensions
│   └── src/                    #   Native HANA artifacts (.hdbsequence for legacy integer IDs)
├── db-qa/                      # QA-channel HDI container schema (peer of db/, deploys to tutorials-hana-qa)
├── srv/                        # CAP Node.js backend — production services
│   ├── server.js               #   Bootstrap: registers Express routes + jobs on cds.on('served')
│   ├── *-service.cds + .js     #   9 services: developer, admin, analytics, exports, display,
│   │                           #     consolidation, scanner, search, chat, event-stream
│   ├── ord-annotations.cds     #   Open Resource Discovery registration for all services
│   ├── handlers/               #   Express route handlers (recommendations.js)
│   ├── exports/                #   ExportsService backends (CSV/zip, XLSX, task records, etc.)
│   ├── lib/                    #   Shared business logic (~40 modules):
│   │                           #     content-store (HANA BLOB serve), embedding-* (RAG), chat-* (Joule),
│   │                           #     accomplishment-evaluator, account-merge, build-catalog,
│   │                           #     navigator-catalog, recommend, co-completion, status-calculator,
│   │                           #     mail-client, ngds-client, adobe-analytics, qrcode-handler,
│   │                           #     analytics-sql-validator (SELECT-only allowlist for runSelectQuery),
│   │                           #     feedback-salt, ip-rate-limit, ttl-cache, pipeline-log, …
│   ├── jobs/                   #   Scheduled tasks: scheduler, account-merge, cleanup,
│   │                           #     ngds-retry, embedding-reconciliation, job-lock (distributed)
│   └── templates/notification/ #   Email HTML templates (Handlebars)
├── srv-qa/                     # QA-channel CAP app (peer of srv/, deploys to tutorials-srv-qa)
│   ├── server.js               #   Mounts xsuaa-scope-middleware (Tutorial.Author gate) + preview renderer
│   └── search-service.cds      #   QA-only search projection
├── scripts/                    # Build-time scripts — fetch, parse, publish, migrate, seed
│   ├── fetch-tutorials.ts      #   Main entry: fetches markdown from GitHub, generates Hugo pages
│   ├── publish-content.ts      #   Delta-publish Hugo HTML → HANA BLOBs via /content/publish
│   ├── parsers/                #   Markdown pipeline: v1 (legacy ACCORDION) + v2 (H3) + images,
│   │                           #     options, cap, github, rules, sanitize-html, hugo-delimiters, types
│   ├── grammars/               #   TextMate grammars for syntax highlighting
│   ├── highlight-cds.ts        #   CDS syntax highlighter
│   ├── install-qa-workflows.ts #   Distribute notify-qa.yml workflow to all -Contribution repos
│   ├── verify-qa-build.ts      #   Post-build verification of QA Hugo output
│   ├── check-qa-schema-drift.ts#   Compare prod vs QA HDI schemas (CI step)
│   ├── setup-dev-data.cjs      #   Slug population + autotest cleanup against DEV HANA
│   ├── seed-*.cjs / seed-*.js  #   Various data seeding scripts
│   ├── migrate-reference-data.js   # Export/import tutorials, missions, events from Java IMS
│   ├── migrate-user-progress.js    # Export/import user progress (paged, resumable)
│   ├── migrate-from-hana.js        # Direct HANA-to-HANA migration
│   └── compare-systems.js      #   Endpoint-by-endpoint diff between Java IMS and CAP
├── test/                       # Vitest workspaces (unit, hybrid, hybrid-qa, smoke)
│   ├── unit + integration/     #   In-memory SQLite, fast, no external deps (npm test)
│   ├── lib/ + jobs/ + parsers/ #   Module-level unit tests
│   ├── hybrid/                 #   Real HANA Cloud via cds bind --exec (npm run test:hybrid)
│   ├── hybrid-qa/              #   Hybrid tests against QA HDI
│   ├── smoke/                  #   HTTP smoke tests against deployed URLs (npm run test:smoke)
│   ├── srv-qa/                 #   QA-srv-specific tests (preview, scope middleware)
│   └── a11y/                   #   Accessibility tests
├── docs/                       # Architecture references and developer documentation
│   ├── pilot-status.md         #   Pilot completion + locked production scope
│   ├── testing-endpoints.md    #   Canonical UI + API endpoint reference (auth/scope mapping)
│   ├── production-ready.md     #   Go-live checklist
│   ├── theme-variants.md       #   Building event-specific theme variants (Joule, Sapphire, TechEd)
│   ├── qa-channel-bootstrap.md #   One-time QA author-preview channel setup
│   ├── content-pipeline.md     #   Fetch → parse → Hugo → HANA pipeline deep-dive
│   ├── authentication-architecture.md, mta-deployment.md, hugo-migration.md, ai-consumption.md, …
│   ├── improvements.md, TODO.md#   Feature backlog and gap tracking (largely historic)
│   └── superpowers/specs/+plans/ # Feature specs and step-by-step implementation plans
├── .deploy/                    # MTA build + deploy artifacts
│   ├── mta.yaml                #   Main MTA descriptor (modules: approuter, srv, srv-qa, db, db-qa, destinations)
│   ├── xs-security.json        #   XSUAA scopes + role collections (Admin, MobileApp, Tutorial.Author)
│   ├── deploy-admin.sh         #   Standalone admin UI deploy helper (bypasses MTA build)
│   └── DEPLOY.md               #   Deploy procedure documentation
├── mta-mcp.yaml                # Separate MCP MTA descriptor (tutorials-mcp → module tutorials-srv-mcp, serves /mcp-auth/*; adopts main-MTA services)
├── deploy/                     # MTA extension descriptors (environment overrides)
│   ├── dev.mtaext              #   Main-MTA development overrides (instance counts, memory, srv-mcp-url)
│   ├── qa.mtaext               #   QA/staging overrides
│   ├── prod.mtaext             #   Production overrides
│   ├── mcp-dev.mtaext          #   MCP-MTA DEV overrides (tutorials-mcp-dev)
│   └── mcp-prod.mtaext         #   MCP-MTA PROD overrides (tutorials-mcp-prod)
├── .github/workflows/          # CI/CD pipelines (GitHub Actions)
│   ├── deploy.yml              #   Build MTA + deploy to BTP CF + post-deploy smoke tests
│   ├── rebuild-content.yml     #   Re-fetch tutorials + rebuild Hugo + publish HTML to HANA
│   ├── rebuild-content-qa.yml  #   QA-channel content rebuild (triggered by repository_dispatch)
│   ├── schema-drift-check.yml  #   Compare prod vs QA HDI schemas
│   └── notify-qa.yml.template  #   Template installed into every -Contribution repo
├── openspec/                   # OpenSpec change proposals + config
├── .tutorial-cache/            # Cached prod-channel GitHub markdown + metadata (gitignored)
├── .tutorial-cache-qa/         # Cached QA-channel markdown (gitignored, separate channel marker)
├── .migration-data/            # Migration export files from Java IMS (gitignored)
├── gen/                        # CDS build output (gitignored)
├── site/                       # Legacy VitePress output (deprecated, gitignored)
├── CLAUDE.md                   # Project context for Claude Code agents
├── AGENTS.md                   # Agent-specific instructions (Codex/Gemini parity)
├── package.json                # Root dependencies + npm scripts (full list: jq '.scripts' package.json)
└── vitest.config.ts            # Vitest workspace config (inline projects array)

Quick Start

Prerequisites: Node.js >= 20, npm

npm install
npm run fetch-tutorials   # Fetch tutorial markdown from GitHub + CAP catalog
cds watch                 # Start CAP server (http://localhost:4004)
npm run dev               # Hugo dev server (separate terminal)
npm run build:all         # Full production build

For full setup including hybrid HANA development, environment variables, and the script reference, see docs/developers/getting-started.md.

Scripts

Full list: jq '.scripts' package.json. The most operationally important ones:

Setup
ScriptDescription
npm installInstall all dependencies
npm run bind:setupFirst-time hybrid env binding (CAP + approuter against real HANA)
npm run setup-dev-dataPopulate slugs + clean autotest data on DEV HANA (requires cds bind)
Dev
ScriptDescription
cds watchStart CAP backend with in-memory SQLite (http://localhost:4004)
npm run watch:hybridCAP backend bound to real HANA via --profile hybrid
npm run dev:hybridCAP (hybrid) + approuter together — full local stack against real HANA
npm run start:approuterStandalone approuter (port 5000)
npm run devHugo dev server with live reload (requires fetch-tutorials first)
Build
ScriptDescription
npm run fetch-tutorialsFetch markdown from GitHub, parse, generate Hugo content pages
npm run discover-reposList discoverable tutorial repos without fetching
npm run build:cdsProduction CDS build
npm run build:cssPostCSS pipeline for SAP Fundamental Styles
npm run build:hugoHugo static site build (minified)
npm run build:appsBuild hugo-apps/ Vue islands into hugo/static/js/
npm run build:adminBuild admin-shell into app/admin-shell/dist/
npm run build:analytics-explorerBuild Analytics Explorer Vue 3 SPA
npm run build:displayBuild Display App (event monitor dashboard)
npm run build:highlightGenerate CDS syntax highlighter assets
npm run generate-dark-themeRegenerate dark-theme CSS variants
npm run validate-tutorialsStatic validation of fetched tutorial markdown
npm run build:allFull production pipeline (fetch + CSS + apps + Hugo + display)
Test
ScriptDescription
npm testUnit tests (in-memory SQLite, fast)
npm run test:watchUnit tests in watch mode
npm run test:hybridHybrid tests against real HANA (requires cf login to DEV)
npm run test:hybrid:watchHybrid tests in watch mode
npm run test:smokeHTTP smoke tests (set SMOKE_BASE_URL / SMOKE_SRV_URL)
npm run test:a11yAccessibility tests
npm run test:a11y:lighthouseLighthouse a11y audit (lhci autorun)
npm run test:a11y:summaryPrint a11y test summary
npm run test:allAll Vitest workspaces (unit + hybrid + smoke + a11y)
Content publishing
ScriptDescription
npm run publish-contentDelta-publish Hugo HTML → HANA BLOBs (use -- --force to bypass delta — required for prod)
QA channel (author preview)
ScriptDescription
npm run fetch-tutorials:qaFetch from *-Contribution repos only (cache: .tutorial-cache-qa/)
npm run build:qaHugo build with QA flag, post-build verify
npm run publish-content:qaForce-publish to QA srv
npm run qa:fullEnd-to-end QA pipeline
Migration (Java IMS → CAP)
ScriptDescription
npm run migrate:referenceExport/import reference data from Java IMS
npm run migrate:usersExport/import user progress (paged, resumable)
npm run migrate:hanaDirect HANA-to-HANA migration
npm run compareCompare Java IMS and CAP responses side-by-side

Environment Variables

Deploy-time variables for the MTA modules (CF env, role collections, secrets) are documented in .deploy/DEPLOY.md. The five most commonly set during local dev:

VariableRequiredDescription
CAP_BASE_URLNo (default http://localhost:4004)CAP srv URL — used by the build pipeline, publish-content, and migration scripts
GITHUB_TOKENNoAvoids GitHub API rate limits when fetching tutorial markdown + commit metadata
CONTENT_API_KEYYes (publish + srv)Bearer token for POST /content/publish and /content/rollback; required on the srv to accept publish writes
SUBMISSION_SALT_SECRETYes (feedback)IP-hash salt for /feedback/submit; bridge returns 503 if missing
IMS_AUTH_TOKENYes (migrate)Bearer token for the legacy Java IMS API during cutover

For the full list, see docs/developers/getting-started.md#environment-variables.

Runtime Architecture

See docs/developers/architecture/runtime.md for full details.

Build Architecture

See docs/developers/architecture/build.md for full details.

Joule Architecture

See docs/developers/architecture/joule.md for full details.

CAP Backend (srv/)

See docs/developers/architecture/cap-backend.md for full details.

Build Pipeline

See docs/developers/architecture/build.md#build-pipeline for full details.

Frontend Apps

See docs/developers/architecture/frontend-apps.md for full details.

Deployment

See docs/developers/operations/deployment.md for full details.

Data Migration

See docs/historic/data-migration.md for full details.

Testing

See docs/developers/operations/testing-guide.md for full details.

External Integrations

See docs/developers/reference/external-integrations.md for full details.

Key Design Decisions

See docs/developers/reference/design-decisions.md for full details.

Documentation

The full documentation set lives in docs/ and is organized by persona:

  • End Users — finding tutorials, using Joule chat, progress and prizes
  • Authors — writing tutorials, owning a repo group, running an event center
  • Developers — architecture, operations, reference (you're probably here)
  • Historic — AEM, IMS, completed migrations

Start at docs/README.md for the full index.

Licensing

Copyright 2026 SAP SE or an SAP affiliate company and tutorials-ims contributors. Please see our LICENSE for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available via the REUSE tool.

Apache-2.0, read
Agent guidance
  1. sap-cx-developer-companionAgent skill for SAP Customer Experience APIs, CDS and errors
  2. sap-cloud-integration-pipeline-assistantAgent skill for the Pipeline Concept in SAP Cloud Integration
  3. DanKromp/skillOverflowCollection of 41 agent skills, 37 for SAP development tasks
  4. ARC-DRAWMCP server drawing BTP solution diagrams on a draw.io canvas
  5. sap-ai-dev-toolkitMCP proxy pinning an agent's ABAP tools to one SAP system
  6. sap-odata-explorerRust CLI and desktop app for exploring SAP OData services
  7. btp-solution-diagram-generatorClaude plugin writing BTP solution diagrams as .drawio files
  8. abap-skillsSeventeen agent skills for ABAP development
  9. drawio-skill-sapGitHub Copilot skill writing BTP solution diagrams as draw.io XML
  10. sap-mdk-appsAgent skill for Mobile Development Kit projects
  11. sap-architectureClaude Code plugin and skill drawing validated BTP diagrams
  12. SAP Datasphere Plugin for ClaudeEighteen Datasphere skills over a bundled MCP server
  13. SAP Power for KiroSAP skills for the Kiro IDE
  14. drawio-btp-diagram-skillsClaude Code skills for BTP architecture diagrams in draw.io
  15. aicore-skillsFour agent skills for SAP AI Core in SAP's AI Skills Library
  16. SAP/automation-pilot-agent-skillsEight skills for writing and operating SAP Automation Pilot content
  17. SAP Developers MCPHosted MCP server of developers.sap.com tutorials and missions
  18. sap-fiori-iosAgent skill mapping Fiori iOS UI Kit nodes in Figma to SwiftUI
  19. SAP/leanix-ai-pluginsClaude Code plugin with two skills for SAP LeanIX scripting
  20. SAP-samples/html5-applications-migration-skills-for-sap-btpClaude Code plugin with skills migrating HTML5 apps to appFront
  21. SAP-samples/joule-a2a-agent-toolkitSkills for building an A2A agent for Joule and deploying it to CF
  22. SAP-samples/sap-devs-cliCLI adding SAP developer knowledge and MCP servers to AI coding tools
  23. secondsky/sap-skillsForty SAP development plugins for coding agents

Details

Sources3
SAP AI Skills Librarydiscovered here, skills.cloud.sapchecked
README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
discovered viaSAP AI Skills Library · skills.cloud.sap
first seen in the atlas
ecosystem and domainbtp, ai-and-agents
Contributors1

From the repository’s contributor list, .

History in the atlas2
  1. A repository the SAP AI Skills Library collection cache carries as processedBy baseline-2026-09-18 and that was never drafted into the atlas, so the changed registry record of 2026-10-09 is the first occasion to enter it; first_seen keeps the baseline date and no revises flag applies, since there is no published entry to revise. One of the three skills the repository registers: the other two name no SAP stack and stay out. Written from the skill's own SKILL.md and GitHub's record for the repository and the sap-tutorials organisation, which GitHub marks verified with the email sapdocs@sap.com and the tutorial navigator as its site. Hard rule 7: skills are indexed, never authored here.
  2. First seen.
For your agent
Ref
artifact:sap-tutorials-content
JSON
/artifacts/sap-tutorials-content.json
MCP
Connecting an agent