agentsclimarketplace

Development workflow

Skill vigneshbarani24/sap-superpowers/skills/development/development-workflow

The SAP consultant's AI operating system - enforced workflows, checklists, and hard gates for Claude Code. Debugging, estimation, and go-live readiness.

Install
npx -y skills add vigneshbarani24/sap-superpowers --skill development-workflow

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use when starting SAP development work, creating transports, moving objects across landscapes, structuring packages, or any task involving DEV→QAS→PRD change management.

SKILL.md

10.9 KB, as published. Nobody here has run it

SAP Development Workflow

This skill enforces disciplined transport management and landscape governance — it makes landscape-breaking shortcuts impossible, not just inadvisable.

Iron Laws

  1. NEVER DEVELOP IN PRODUCTION. No exceptions. Not for "urgent fixes." Not for "just a config change." Not for "it's only a text." Production development bypasses QA, creates untraceable changes, and destroys audit trails. One violation invalidates the entire change management process.
  2. NEVER RELEASE A TRANSPORT WITHOUT TESTING. A transport released to PRD without QAS validation is a production incident waiting to happen. "It worked in DEV" is not testing. QAS confirmation with documented test evidence is testing.
  3. NEVER MIX OBJECT TYPES IN ONE TRANSPORT. Workbench objects and customizing objects belong in separate transports. Mixed transports create import sequence dependencies that break in production. One transport = one logical unit of change.
  4. NEVER SKIP THE NAMING CONVENTION. Unnamed or inconsistently named objects become orphaned. When the developer leaves, no one knows what the object does, who owns it, or whether it's safe to delete.
  5. ALWAYS DOCUMENT THE TRANSPORT BEFORE RELEASE. Description, linked ticket/change request, objects included, and reason for change. A transport with no description is a transport that will cause a production incident investigation to stall.

Rationalization Table

Agent Will Try To...Why It Seems ReasonableWhy It FailsCounter
Suggest a direct PRD fix for "urgent" changes"It's a 2-minute config change, the normal process takes days"Emergency PRD changes have caused more production incidents than they've prevented. Every "urgent" shortcut bypasses regression checks.Iron Law 1. Escalate to the emergency transport process (fast-tracked CTS), not a direct PRD change.
Mix workbench and customizing in one transport"These changes are related, keep them together"Workbench objects need ABAP import; customizing needs business config import. Mixed transports fail on import sequencing across clients.Iron Law 3. Separate transports are always required. Link them in the change request, not in the transport.
Release to PRD without QAS sign-off"There's no time, we need this in PRD today"QAS exists to catch exactly the errors that "seem fine" in DEV. Skipping it means the first test is in production with real users.Iron Law 2. If the process cannot accommodate QAS testing, the process is broken — escalate to management, don't skip QAS.
Create objects in the wrong package"The default package is fine for now"Objects in wrong packages lose their transport layer assignment. They become orphaned and cannot be moved to the correct landscape via CTS.Checklist Step 2: Package assignment is mandatory before any object creation.
Skip transport documentation"Everyone knows what this transport does, it's obvious"In 6 months, "obvious" becomes "what was this for?" Transport audits, rollbacks, and incident investigations all depend on descriptions.Iron Law 5. No transport gets released without a description referencing the change request.
Use local objects ($TMP) for development"I'll move them to a proper package later"Local objects cannot be transported. "Later" becomes never. Development ends up in $TMP and can never reach production.Checklist Step 2: Assign to a transportable package before development begins.

Red Flags

Watch for these phrases in your own reasoning — each one signals you're about to violate an Iron Law:

  • "It's just a small change in production..." → Iron Law 1. Stop. There is no such thing as a safe production change outside CTS.
  • "We can clean up the package structure later..." → Later never comes. Package assignment happens before object creation.
  • "Let's put everything in one transport to keep it simple..." → Simplicity now = import failure later. Separate by object type.
  • "QAS is basically the same as DEV, testing there is just a formality..." → QAS exists because DEV is not DEV. Config drift, master data differences, and user permissioning make QAS essential.
  • "I'll add the transport description before the release..." → The release IS the deadline. If it doesn't have a description, it doesn't get released.
  • "The naming convention doesn't really matter for this one..." → It matters for every one. Inconsistency compounds.
  • "CTS+ is overkill for this change..." → CTS+ is the process. Use it.
<HARD-GATE> Before any development object is created or any transport is opened: confirm (1) the target package exists and is transportable, (2) the development system is DEV — not QAS or PRD, (3) a change request exists in the project tracking system, and (4) the naming convention for this customer/project is confirmed. If any of these four conditions is not met, STOP — do not create the transport. </HARD-GATE>

Checklist

  1. Confirm development system — Verify the active system is the DEV client, not QAS or PRD.

    • Evidence: System ID and client number (e.g., D01/100) confirmed in SY-SYSID and SY-MANDT.
    • Gate: System is DEV. If not DEV, halt and escalate.
  2. Assign package before creating objects — Check that a valid, transportable package exists for this project/module. Never use $TMP.

    • Evidence: Package name confirmed in SE80, package attributes show transport layer assigned.
    • Gate: Package exists with correct transport layer. If not, create the package before proceeding.
  3. Create the correct transport type — Workbench changes (ABAP, Dictionary, BAdI) use Workbench Request (SE09). Customizing changes use Customizing Request (SE10). Never mix.

    • Evidence: Transport type shown in SE01 matches the object type being developed.
    • Gate: Correct transport type selected and documented.
  4. Apply naming convention — All objects follow the customer namespace (Z/Y prefix or registered namespace). Object name includes module identifier and functional identifier per project standards.

    • Evidence: Object name matches the naming convention table confirmed in Step 0.
    • Gate: Name reviewed and approved before saving.
  5. Develop and unit test in DEV — Implement the change. Run SE37 function module tests, write ABAP Unit tests where applicable, execute the full user scenario in DEV.

    • Evidence: Unit test results documented. DEV scenario walkthrough complete with screenshots or log output.
    • Gate: All unit tests pass. No syntax errors (SE38/SLIN). ATC checks complete with no open findings above threshold.
  6. Release transport from DEV — Release the transport task (developer level) then the transport request (team lead level) via SE01/SE09.

    • Evidence: Transport status shows "Released" in SE01. Transport log shows no errors.
    • Gate: Transport released successfully. Request number recorded in change management ticket.
  7. Import to QAS and execute integration test — Import the released transport to QAS via STMS. Execute the full test scenario in QAS with a test user (not an admin/basis user).

    • Evidence: STMS import log for QAS shows RC=0. Test execution results documented (pass/fail per test case). Tester name and date recorded.
    • Gate: All test cases pass in QAS. If any fail, return to DEV — do not import partial fixes directly to QAS without a new transport.
  8. Obtain PRD import approval — Change request status updated to "QAS Approved." PRD import request submitted per the customer's change management process.

    • Evidence: Change request shows QAS sign-off with approver name. PRD import request created in the customer's ITSM tool.
    • Gate: Formal approval received. Import scheduled in the next available change window.
  9. Import to PRD and verify — Import the transport to PRD via STMS during the approved change window. Execute smoke test in PRD immediately after import.

    • Evidence: STMS import log for PRD shows RC=0. PRD smoke test results documented. No production incidents raised within 24 hours.
    • Gate: PRD smoke test passes. Change request closed with completion date.

Transport Naming Reference

Object TypeTransport TypeT-Code to CreateNotes
ABAP programs, function modules, classesWorkbench RequestSE09Never mix with customizing
IMG/customizing settingsCustomizing RequestSE10Never mix with workbench
Transport of copiesTransport of CopiesSE01For corrections only — not standard development flow
CTS+ (extended transport)CTS+ RequestCTS_BROWSERFor non-ABAP content (Fiori, BTP, metadata)

Landscape Overview

DEV (Development) → QAS (Quality Assurance) → PRD (Production)
     SE09/SE10           STMS Import               STMS Import
     (develop)           (integration test)         (change window)

Each arrow represents a formal transport import — never a direct change.

Package Structure Template

Z<CUSTOMER>_<MODULE>         — Top-level package (e.g., ZABC_FI)
  Z<CUSTOMER>_<MODULE>_OBJ   — Dictionary objects (tables, structures, types)
  Z<CUSTOMER>_<MODULE>_PRG   — Programs and reports
  Z<CUSTOMER>_<MODULE>_FC    — Function groups and modules
  Z<CUSTOMER>_<MODULE>_CL    — Classes and interfaces
  Z<CUSTOMER>_<MODULE>_ENH   — Enhancements and BAdI implementations
  Z<CUSTOMER>_<MODULE>_CFG   — Configuration (if workbench-transportable)

Verification

This skill is complete ONLY when ALL of the following are true:

  • Development was performed in DEV system — never in QAS or PRD
  • All objects are assigned to a transportable package (not $TMP)
  • Naming conventions applied to every object created
  • Transport types are correct — workbench and customizing in separate transports
  • All transports have descriptions referencing a change request number
  • Unit tests documented with pass results in DEV
  • QAS import RC=0 confirmed in STMS import log
  • QAS test cases executed and documented with tester sign-off
  • PRD import approved via formal change management process
  • PRD import RC=0 confirmed and smoke test executed

Evidence required: STMS import logs (DEV release + QAS import + PRD import), unit test documentation, QAS test case results with tester sign-off, change request with approval trail.

Next Skill

After completing this skill, invoke: code-review Conditions for handoff: Before the transport is released from DEV (after Step 5, before Step 6), trigger code review to validate the implementation against standards.

Cross-References

  • Use code-review before releasing any transport from DEV
  • Use troubleshooting if STMS import fails at any landscape stage
  • Use code-generation when the development task involves generating new ABAP Cloud or RAP objects

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.