{"ref":"artifact:alokm3hta-star-abap-offstack-testing","page":"/artifacts/alokm3hta-star-abap-offstack-testing","json":"/artifacts/alokm3hta-star-abap-offstack-testing.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"alokm3hta-star-abap-offstack-testing","name":"abap-offstack-aunit","artifact_type":"skill","ecosystem":"abap","domain":"ai-and-agents","origin_ring":"independent","description":{"one_line":"An agent skill that bootstraps off-stack ABAP Unit tests and an [abaplint](artifact:abaplint-abaplint) gate onto an abapGit-serialised repository, with no live SAP system.","short":"Agent skill for off-stack ABAP Unit tests and an abaplint gate","what_it_solves":"The skill hands a coding agent a procedure and a scaffold to copy into an abapGit repository: the [abaplint](artifact:abaplint-abaplint) transpiler and open-abap-core turn serialised ABAP into JavaScript, and the repository's existing ABAP Unit tests then run on [Node.js](external:nodejs). It names three judgement calls the agent must make, and must put to the developer where it cannot infer them: the dialect to pin as `syntax_version`, shim or factory for each class under test that drags in a database, BAPI or HTTP adapter, and the minimal DDIC fixtures, discovered by following `compileError`. The scaffold is a `test-offstack/` runner, a GitHub Actions workflow and an `abaplint.json`, and once it is in the repository it runs without the agent: `npm test` locally, and in CI abaplint first with the off-stack tests behind `needs: lint`, where a red job blocks the pull request. Beside `SKILL.md` sit four reference files, on dialect pinning, shim against factory, DDIC fixtures and CI wiring. The maintainer records that the skill itself was written with AI assistance and reviewed by hand, and that the abaplint and open-abap tooling it leans on is MIT and fetched at build time rather than redistributed.","when_not_to_use":"Not a substitute for testing in a system: the README states that any class calling the database, classic BAPIs or HTTP is shimmed out and stays an on-stack ATC and ABAP Unit concern, and that an off-stack green is CI-grade provenance rather than an in-system pass. It also assumes a particular shape of project. The ABAP has to be abapGit-serialised into a Git repository, Node.js 22 or later has to be available locally and in CI, and the CI has to be GitHub Actions."},"links":{"repo":"https://github.com/alokm3hta-star/abap-offstack-testing"},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/alokm3hta-star/abap-offstack-testing","title":"abap-offstack-aunit — README","checked":"2026-10-18","quote":"npx skills add alokm3hta-star/abap-offstack-testing --skill abap-offstack-aunit"}]}},"identity":{"author":"Alok Mehta","license":"Apache-2.0"},"agent":{"source":{"url":"https://github.com/alokm3hta-star/abap-offstack-testing","title":"abap-offstack-aunit — README, Install","checked":"2026-10-09","quote":"npx skills add alokm3hta-star/abap-offstack-testing --skill abap-offstack-aunit"},"install":"npx skills add alokm3hta-star/abap-offstack-testing --skill abap-offstack-aunit"},"skills":{"provenance":"indexed","kind":"capability","canonical_source":"https://github.com/alokm3hta-star/abap-offstack-testing"},"requires":[{"ref":"external:nodejs","for":"The transpiled ABAP and the ABAP Unit tests run as a Node process, both on a developer's machine and in the CI job the scaffold installs.","requirement":"required","sources":[{"url":"https://github.com/alokm3hta-star/abap-offstack-testing","title":"abap-offstack-aunit — README, Requirements","checked":"2026-10-09","quote":"**Node.js 22+** and **npm** available locally and in CI."}]},{"ref":"artifact:abaplint-abaplint","for":"The transpiler and the static-analysis gate both come from the abaplint toolchain, which the scaffold installs from npm rather than bundling.","requirement":"required","sources":[{"url":"https://github.com/alokm3hta-star/abap-offstack-testing","title":"abap-offstack-aunit — README, What it does","checked":"2026-10-09","quote":"The skill transpiles serialised ABAP to JavaScript with the **abaplint transpiler** and **open-abap-core**, then runs the repo's existing ABAP Unit tests on Node."}]},{"ref":"artifact:abapgit-abapgit","for":"The ABAP under test must be abapGit-serialised into a Git repository for the scaffold to run against it.","requirement":"required","basis":"binding","role":"installation","sources":[{"url":"https://github.com/alokm3hta-star/abap-offstack-testing","title":"abap-offstack-testing README","checked":"2026-10-18","quote":"Your ABAP is **abapGit-serialised** into a Git repository (`.clas.abap` etc.)."}]},{"ref":"artifact:abaplint-transpiler","for":"Transpiles the serialised ABAP to JavaScript so the existing ABAP Unit tests can run on Node.","requirement":"required","basis":"binding","role":"transpilation","sources":[{"url":"https://github.com/alokm3hta-star/abap-offstack-testing","title":"abap-offstack-testing README","checked":"2026-10-18","quote":"The skill transpiles serialised ABAP to JavaScript with the **abaplint\ntranspiler** and **open-abap-core**, then runs the repo's existing ABAP Unit tests\non Node."}]},{"ref":"artifact:open-abap-open-abap-core","for":"Supplies the ABAP runtime library the transpiled code runs against on Node.","requirement":"required","basis":"binding","role":"runtime-library","sources":[{"url":"https://github.com/alokm3hta-star/abap-offstack-testing","title":"abap-offstack-testing README","checked":"2026-10-18","quote":"The skill transpiles serialised ABAP to JavaScript with the **abaplint\ntranspiler** and **open-abap-core**, then runs the repo's existing ABAP Unit tests\non Node."}]}],"provides":[{"capability":"capability:agent-guidance","what_it_does":"Carries the off-stack testing procedure as agent-facing guidance with a copyable scaffold: dialect pinning, class isolation, DDIC fixtures and the GitHub Actions wiring, so the agent sets the harness up rather than being told the steps each time.","sources":[{"url":"https://github.com/alokm3hta-star/abap-offstack-testing","title":"abap-offstack-aunit — README, Two layers","checked":"2026-10-09","quote":"**The skill** (`SKILL.md` + `references/` + `assets/`) is guidance *for a coding agent*. You install it into the agent."},{"url":"https://github.com/alokm3hta-star/abap-offstack-testing","title":"abap-offstack-aunit — README, Using it once installed","checked":"2026-10-09","quote":"Makes the **three judgement calls**, asking you where it cannot infer them"}],"facets":[{"key":"installs_into","value":["Claude Code","Cursor","Codex","OpenCode"],"source":{"url":"https://raw.githubusercontent.com/alokm3hta-star/abap-offstack-testing/main/README.md","title":"abap-offstack-aunit — README, Install","checked":"2026-10-15","quote":"Claude Code, Cursor, Codex, OpenCode, and others"}},{"key":"system_reach","value":"None needed","source":{"url":"https://raw.githubusercontent.com/alokm3hta-star/abap-offstack-testing/main/README.md","title":"abap-offstack-aunit — README","checked":"2026-10-15","quote":"Nothing requires a provisioned SAP system."}}]}],"provenance":{"discovered_via":[{"source":"source:sap-ai-skills-library","channel":"skills.cloud.sap"}],"first_seen":"2026-09-18"},"history":[{"date":"2026-10-09","field":"entry","from":null,"to":"created","reason":"In the SAP AI Skills Library registry snapshot since the baseline of 2026-09-18 and never drafted; the registry record for skills/abap-offstack-aunit changed before the 2026-10-09 check, so it enters as a new entry rather than a revision. Written from the repository's own README; hard rule 7: skills are indexed, never authored here. The registry's skillspector scan is its own dated claim and is not carried as a field."},{"date":"2026-10-15","field":"provides.agent-guidance.facets","from":null,"to":"installs_into: Claude Code, Cursor, Codex, OpenCode; system_reach: None needed","reason":"capability:agent-guidance widened installs_into to the ABAP door and declared system_reach there. The README read on 2026-10-15 names four clients beside its install command and adds \"and others\", so the four named ones are the value and the open end is not read as a fifth. This is the only entry behind the door that states the third system_reach state, in a sentence of its own: nothing requires a provisioned SAP system. The boundary it states elsewhere, that shimmed-out classes stay an on-stack concern, is the entry's own warning and not a qualification of that value."}],"drafted_with_ai":true,"maintainers":["actor:alokm3hta-star"],"contributors":["actor:alokm3hta-star"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-07, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"poor","evidence":"none found in the tree"},{"label":"Docs","tier":"good","evidence":"README 6 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":0,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name","stars":0,"forks":0,"open_issues":1,"archived":false,"pushed_at":"2026-07-20","license_spdx":"Apache-2.0","org_owned":false,"default_branch":"main","created_at":"2026-07-20T14:10:26Z","open_prs":0,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":5772,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2026-07-20","last_commit":"2026-07-20","commits":2,"contributors":1,"readme_path":"README.md","readme_sha":"5f45e537b07b669ff3f9c3e2c4af7c0b3ea94c5c","repo_read":"2026-10-24"},"edges":{"maintainers":[{"ref":"actor:alokm3hta-star","name":"alokm3hta-star","json":"/actors/alokm3hta-star.json"}],"contributors":[{"ref":"actor:alokm3hta-star","name":"alokm3hta-star","json":"/actors/alokm3hta-star.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}