legacy-code-doc — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited legacy-code-doc (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Produce documentation for ABAP objects that have none. The output is for two audiences at once: a developer who must change the code next month, and a manager deciding whether it survives the next migration.
adt_ping to verify).search, where-used). adt_read_table examples additionally need NW 7.55+; skip data sampling on older systems.
write the documentation to a local file if the user asks.)
adt_get_source output is capped per call (~64 KB). Forbig programs paginate with firstLine/lastLine, or slice with onlyMethod. Never assume one call returned the whole object — check truncated/totalLines.
adt_search_objects if only a fuzzy name is known. Identify the object type — the strategy differs:
(adt_browse_package on its package, or INCLUDE statements from source) and fetch each include that carries logic.
definitions first (the public contract), thenimplementations method by method (onlyMethod) for the ones that matter.
(adt_get_source with type function + group); shared TOP include for state.
While reading, collect — don't paraphrase line by line:
methods, FM interfaces, selection screen parameters.
every write** (INSERT/UPDATE/MODIFY/DELETE, CALL FUNCTION ... IN UPDATE TASK). Writes are the risk register.
authority-checks, COMMIT/ROLLBACK placement.
sy-mandt/sy-sysid branching.
writes, swallowed exceptions, dead branches (adt_grep_source across the package helps find copy-paste siblings).
adt_where_used on the main object: who calls this? A "legacy" reportcalled by 14 other programs is infrastructure, not legacy.
adt_list_versions / adt_compare_versions: when was it last touched, howactively does it change? (Stable-for-8-years and changed-monthly need very different documentation depth.)
adt_read_table samples on its Z tables toshow real data shapes (row counts, key examples) — ask before querying business data, and keep samples small.
Structure (trim sections that don't apply):
# <OBJECT> — <one-line purpose>
## What it does (3–6 sentences, business language)
## How it's triggered (jobs, transactions, callers — from where-used)
## Inputs / outputs (selection screen, interfaces, files, spool)
## Data (tables READ / tables WRITTEN — writes first, bold)
## Control flow (numbered happy path; branches that matter)
## External dependencies (RFCs, BAPIs, files, config tables)
## Risks & smells (each with file:line references)
## Change history signal (last N versions: who, when, what theme)
## Migration notes (S/4 readiness: deprecated statements, obsolete FMs —
apply the abap-clean-core skill's levels if loaded)Cite everything as INCLUDE/METHOD:line so the next developer can jump straight in. If the user wants the doc persisted, write it to a local markdown file named after the object.
For "document the whole package": adt_browse_package to enumerate, then triage — document deeply only objects with DB writes or many callers; one-line summaries for trivial ones. State the triage rule in the output so nobody mistakes a one-liner for a full review.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.