feat(skills): add ABAP-to-BTP-CAP modernization skill chain (MVP) - #278
Closed
Raistlin82 wants to merge 2 commits into
Closed
feat(skills): add ABAP-to-BTP-CAP modernization skill chain (MVP)#278Raistlin82 wants to merge 2 commits into
Raistlin82 wants to merge 2 commits into
Conversation
Introduces a side-by-side modernization workflow that takes a custom ABAP
package (Z*) on S/4HANA / ECC and produces a complete BTP-native CAP
project scaffold (CDS schema + service + handler stubs + Fiori Elements V4
+ MTA deployment artifacts) without touching the source ABAP system.
This is the MVP foundation. Orchestrator + 2 core sub-skills (schema +
service) included. Remaining 4 sub-skills (clean-core-gap, fiori-elements,
auth-mapping, btp-mta) tracked as follow-up.
## What's included
### New skills (3 markdown files, 1211 lines)
- skills/modernize-abap-to-btp-cap.md (orchestrator, 357 lines)
- End-to-end workflow: inventory → schema → service → fiori → auth → mta → ADR
- Smart Defaults table, BTP vs On-Premise comparison, error handling
- References sub-skills via inline markdown links
- skills/modernize-abap-cap-schema.md (370 lines)
- DDIC → CDS type mapping table (24 types)
- Foreign-key → Association/Composition inference
- cuid / managed aspect auto-application (sysuuid_x16 + audit fields)
- Currency / Quantity semantic annotations
- mandt / CLNT exclusion (single-tenant per service)
- skills/modernize-abap-cap-service.md (484 lines)
- FM/program/class → CAP service action mapping
- Bound vs unbound action classification
- TypeScript handler stubs with TODO + ABAP source excerpts
- 13 common ABAP → CAP handler pattern mappings (SELECT, MODIFY,
LOOP AT, READ TABLE, CALL FUNCTION, etc.)
- Type extraction to srv/types.cds for complex inline types
### README update
- New "BTP CAP Modernization (Preview)" section in skills/README.md
- Explains relationship vs sap-clean-core-atc, migrate-custom-code
(those keep source in SAP; this rebuilds as BTP CAP)
- Typical workflow chain documented (7 steps)
## Design decisions
- **Side-by-side, NOT in-place**: leaves source ABAP system read-only.
Generates parallel CAP target — no SAPWrite calls needed.
- **Skill-first contribution**: aligned with arc-1's 17-skill community
pattern; NO new MCP tool, NO core code change. Honors the 12-tool
token-efficient principle (CLAUDE.md §"Design Principles").
- **Markdown orchestration**: skills chain via inline markdown links
(consistent with sap-clean-core-atc → migrate-custom-code pattern).
- **Sandbox output by default**: writes to <target>/.target-cap-staging/
for review before apply. Reversible.
- **Smart Defaults**: every decision documented with rationale; avoid
asking the user unless ambiguous.
- **TODO scaffolds, NOT auto-implementation**: handler bodies are stubs
with embedded ABAP source excerpts; user implements business logic
in a second pass. Honest about what the LLM can/cannot translate.
## Use cases addressed
- Greenfield BTP CAP migration of a Z* package from ECC / on-prem S/4
- Lift-and-redesign for BTP-native architecture
- POC / pilot for evaluating BTP CAP as target
- Quarterly modernization assessment (run with --skip flags for analysis-only)
- Pre-deployment audit before committing to BTP roadmap
## NOT addressed (intentionally out of scope)
- No SAP write operations
- No CF deployment automation (cf push stays manual)
- No HANA service provisioning
- No XSUAA service creation
- No automatic handler logic generation
- No regression test execution
- No transport-coordinated migration
- No Kyma target (CF only for v1)
- No CAP Java target (Node.js only for v1)
- No Freestyle UI5 (Fiori Elements V4 only)
## Follow-up
Track sub-skill development:
- modernize-abap-clean-core-gap (~400 lines)
Batch Clean Core L-A per-edition compliance check + replacement suggestions
- modernize-abap-fiori-elements (~500 lines)
Service → Fiori Elements V4 LROP scaffold (manifest + annotations)
- modernize-abap-auth-mapping (~300 lines)
AUTHORITY-CHECK → XSUAA scopes + @restrict annotations
- modernize-abap-btp-mta (~300 lines)
CAP project → mta.yaml + Dockerfile + manifest.yml
## Testing
This is a skill (markdown), no automated tests apply per arc-1 convention.
Smoke-testable manually by:
1. Connecting ARC-1 to a system with Z packages
2. Invoking the skill via Claude Code / Cursor / Copilot
3. Verifying scaffold output compiles (npx cds compile)
## Acknowledgments
Inspired by:
- generate-rap-service-researched (research-first pattern)
- sap-clean-core-atc (Clean Core classification)
- migrate-custom-code (ATC-driven fix pattern)
Collaborator
|
Good idea! Will need further testing, but i think only skills update, from arc-1 side nothing to do |
…AML frontmatter arc-1 main migrated skills from flat .md files to directory + SKILL.md + YAML frontmatter format (compatible with vercel-labs/skills CLI and the Anthropic Agent Skills standard). This PR's skills now follow the new format. ## Changes - `skills/modernize-abap-to-btp-cap.md` → `skills/modernize-abap-to-btp-cap/SKILL.md` - `skills/modernize-abap-cap-schema.md` → `skills/modernize-abap-cap-schema/SKILL.md` - `skills/modernize-abap-cap-service.md` → `skills/modernize-abap-cap-service/SKILL.md` Each SKILL.md now starts with YAML frontmatter: ```yaml --- name: <skill-name> description: <discovery description with "Use when..." pattern> --- ``` Cross-links between skills updated from `[name](name.md)` to `[name](../name/SKILL.md)` for sibling skills, matching the pattern used in existing skills (e.g., sap-clean-core-atc/SKILL.md → ../migrate-custom-code/SKILL.md). skills/README.md links updated to point to the new directory paths. ## Verification - All 3 skills have YAML frontmatter with discovery-friendly descriptions - All inline cross-links resolved to new paths - No orphan `*.md` files (git mv handled the rename, history preserved) - skills/README.md reflects new paths This is a zero-content-change refactor — only structural reorganization to align with the new arc-1 skill format introduced in upstream main.
This was referenced May 13, 2026
Collaborator
|
@Raistlin82 |
This was referenced May 13, 2026
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Adds a side-by-side ABAP → BTP CAP modernization skill chain to
skills/. Takes a custom ABAP package (Z*) on S/4HANA / ECC and produces a complete BTP-native CAP project scaffold (CDS schema + service + handler stubs + future Fiori Elements V4 + MTA deployment artifacts) without touching the source ABAP system.This is the MVP foundation (draft for review). Orchestrator + 2 core sub-skills included. Remaining 4 sub-skills tracked as follow-up — see Follow-up below.
Motivation
Existing arc-1 skills cover:
migrate-custom-code) — fixes ATC findings inside the SAP systemsap-clean-core-atc) — bucket Z code into Levels A-Dgenerate-rap-service*) — new services on ABAP CloudBut there's a gap: side-by-side BTP CAP modernization — when the target architecture is a CAP application on BTP (not ABAP Cloud), the workflow is different:
This skill chain addresses that use case.
What's included
New skill files (3 markdown, ~1211 lines)
modernize-abap-to-btp-capmodernize-abap-cap-schemacuid/managedaspect auto-application. Currency / Quantity semantic annotations.modernize-abap-cap-serviceREADME update
New section "BTP CAP Modernization (Preview)" in
skills/README.md:sap-clean-core-atc/migrate-custom-code(those keep source in SAP)bootstrap-system-context,sap-unused-code,sap-clean-core-atc,generate-cds-unit-test)Design decisions
SAPWritecalls needed.sap-clean-core-atc→migrate-custom-codepattern).<target>/.target-cap-staging/for review before apply. Reversible.Use cases addressed
--skipflags for analysis-only)What this skill chain does NOT do (intentionally out of scope)
cf pushstays manual)Follow-up
The orchestrator references 4 additional sub-skills that are not yet included in this PR (tracked as next steps):
modernize-abap-clean-core-gap(~400 lines) — Batch Clean Core L-A per-edition compliance check + replacement suggestionsmodernize-abap-fiori-elements(~500 lines) — Service → Fiori Elements V4 LROP scaffold (manifest + annotations)modernize-abap-auth-mapping(~300 lines) —AUTHORITY-CHECK→ XSUAA scopes +@restrictannotationsmodernize-abap-btp-mta(~300 lines) — CAP project →mta.yaml+Dockerfile+manifest.ymlThe orchestrator handles missing sub-skills gracefully (skip with warning). Sub-skills will be added in follow-up PRs once the MVP gets review feedback.
Compatibility
package.json/tsconfigchangesSAPManage(probe),SAPRead,SAPSearch,SAPContext)mcp-sap-docsMCP server (optional but recommended for Clean Core gap analysis)Testing
This is a skill (markdown), no automated tests apply per arc-1 convention.
Smoke-testable manually by:
npx cds compile <target>/db/schema.cds --to edmxInspired by
generate-rap-service-researched— research-first patternsap-clean-core-atc— Clean Core classification structuremigrate-custom-code— ATC-driven fix patternOpen questions for the maintainer
skills/README.md. Open to feedback on:modernize-abap-*. Other options considered:port-abap-to-cap-*,btp-cap-from-abap-*. Prefer the currentmodernize-*family for symmetry withmigrate-*.Stats
Marked as Draft to invite review before finalization. Happy to address comments and revise.
🤖 Generated with Claude Code